Toolbar : mehr Buttons als Platz ? [erledigt]
Verfasst: Mi, 21. Jan 2015 2:13
bei o:maximize passen alle Buttons aber je nach Fenster Grösse sind die letzten Buttons von der Toolbar nicht mehr sichtbar ... was kann man dagegen tun ?
Das deutschsprachige Forum für Entwickler in der Xbase-Welt, ein Angebot des Deutschsprachige Xbase-Entwickler e. V.
https://xbaseforum.de/
Ja so was hab ich in Rösrath bei Usertreffen 2009 vorgestellt aber ich meine XbpToolbar() mit der Button Leiste oben wie sie z.b von Firefox für die Lesezeichen Symbol-Leiste verwendet wird.Wolfgang Ciriack hat geschrieben:Am besten wäre da so etwas wie Roger in seinem Beispiel OUTLOOKBAR verwendet ...
tja ... man sollte mal im Help File lesen :AUGE_OHR hat geschrieben:habt ihr schon mal versucht das Demo c:\ALASKA\XPPW32\Source\samples\activex\editor\EDITOR.EXE kleiner zu machen ?
ich hatte erwartet das die XbpToolbar() "abgeschnitten" würde ...
soweit so gut und wenn man das auf .F. stellt wird also "abgeschnitten" was ich ja für eine Rebar haben möchte.XbpToolBar()
:wrappable
-
Bestimmt, ob die Schaltflächen beim Vergrößern umgebrochen werden
Code: Alles auswählen
IF oXbPart[A_XbPart]:isDerivedFrom( "DXE_Toolbar") .OR. ;
oXbPart[A_XbPart]:isDerivedFrom( "XbpToolbar")
jMax := oXbPart[A_XbPart]:numItems()
FOR j := 1 TO jMax
oButton := oXbPart[A_XbPart]:getItem(j) // XbpToolBarButton()
IF oButton:isDerivedFrom( "XbpToolbarButton")
IF oButton:GetVisible() // aus axctrls.prg
//
// es ist IMMER .T.
//
ELSE
cCaption := oButton:Caption
cBlock1 := VAR2CHAR(oButton:activate)
cBlock2 := "{ '"+cCaption+"',"+cBlock1+"}"
::oMenu:AddItem(&cBlock2)
lAdd := .T.
ENDIF
ELSE
hab doch ein XbpToolbar() Demo beigefügt wo man sieht das er sehr früh mit dem "abschneiden" beginnt.Herbert hat geschrieben:ich denke, du musst die Koordinaten der einzelnen Elemente prüfen und schauen, ob diese innerhalb der Weite des Toolbars liegen.
hm ...Herbert hat geschrieben:Visible sind tatsächlich alle, selbst wenn diese ausserhalb des Mutterfensters liegen. Das ist auch bei anderen Elementen so, die ausserhalb ihres Parents liegen.
ich meinte das aber nach dem 1st resize sortiert es sich dann.AUGE_OHR hat geschrieben:wo man sieht das er sehr früh mit dem "abschneiden" beginnt.
da ist noch so viel Platz für 2-3 Buttons ... und das variiert beim Fenster resizen.
ich hatte gedacht das ein activeX, welches als SuperClass XbpWindow() hat, doch mit o:currentsize() klar kommen müsste ... oder ? egal auf der linken Seite sieht man im VX Debugger die IVar vom ActiveX und da gibt es o:WidthoError:args :
-> VALTYPE: C VALUE: currentsize
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Unbekannter Name.
Member-Variable ist f r dieses Objekt unbekannt
oError:filename : NIL
oError:genCode : NIL
oError:operation : currentsize
oError:osCode : -2147352570
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
nun sieht man ja die IVars von XbpToolbarButton() aber da gibt es kein o:activate ... was schreibe ich nun in bAction ?XbpMenu
o:addItem( <aItem> ) --> nItemIndex
xCaption
xCaption ist die Caption des Menüeintrags. Das kann NIL, eine Zeichenkette, die Resource ID einer Bitmap, ein Objekt der Klasse XbpBitmap oder ein Objekt der Klasse XbpMenu sein. Das Verwenden von XbpBitmap-Objekten erlaubt die Anzeige von Rasterbildern, die in einer Reihe von Bildformaten vorliegen können. Ausserdem werden in Bitmaps, für die eine Transparenzfarbe definiert ist, die transparenten Bereiche automatisch durch die Hintergrundfarbe des XbpMenubar-Objekts ersetzt.
bAction
bAction ist ein optionaler Codeblock, der ausgeführt wird, nachdem der Menüeintrag ausgewählt wurde. Soll der Menüeintrag keine Aktion auslösen, ist für bAction der Wert NIL anzugeben.
Code: Alles auswählen
IF oButton:isDerivedFrom( "XbpToolbarButton")
lToolbar := .T.
//
// activeX IVar "Width"
//
nSum += oButton:Width
IF nSum > aRc[3]
cCaption := oButton:Caption
//
// hm ... PRIVATE
//
cRetValue := oXbPart
//
cBlock1 := "{|| TbMenuClick(cRetValue, "+LTRIM(STR(j))+" )}"
cBlock2 := "{ '"+cCaption+"',"+cBlock1+"}"
//
::oMenu:AddItem(&cBlock2)
lAdd := .T.
ENDIF
ELSE
...
FUNCTION TbMenuClick(oXbPart,nNo)
LOCAL oButton
IF nNo > 0
oButton := oXbPart[A_XbPart]:getItem(nNo) // XbpToolBarButton()
PostAppEvent( xbeTBAR_ButtonClick,oButton,,oButton:GetToolbar() )
ENDIF
RETURN NIL