Seite 1 von 1

Toolbar : mehr Buttons als Platz ? [erledigt]

Verfasst: Mi, 21. Jan 2015 2:13
von AUGE_OHR
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 ?

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mi, 21. Jan 2015 9:54
von Tom
Größe anpassen?

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mi, 21. Jan 2015 9:57
von Wolfgang Ciriack
Am besten wäre da so etwas wie Roger in seinem Beispiel OUTLOOKBAR verwendet, oder einen Button am Ende der Toolbar, der als Menüpunkte alles dynamisch aufnimmt, was nicht mehr in die Toolbar passt.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mi, 21. Jan 2015 10:06
von Tom
Ja, so ähnlich mache ich das auch. Wenn der Raum nicht reicht, wird ein zusätzlicher Button ("Mehr ...") angezeigt, der ein Ausklappmenü öffnet.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Do, 22. Jan 2015 0:20
von AUGE_OHR
Wolfgang Ciriack hat geschrieben:Am besten wäre da so etwas wie Roger in seinem Beispiel OUTLOOKBAR verwendet ...
Ja so was hab ich in Rösrath bei Usertreffen 2009 vorgestellt
PbStack.JPG
PbStack.JPG (29.95 KiB) 11096 mal betrachtet
aber ich meine XbpToolbar() mit der Button Leiste oben wie sie z.b von Firefox für die Lesezeichen Symbol-Leiste verwendet wird.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: So, 25. Jan 2015 0:15
von AUGE_OHR
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 ...

was man ganz gut sehen kann ist das XbpToolbar() noch einen (Static ?) Parent enthält der ein wenig grösser ist als die Toolbar selbst ...
das ist wohl der "Trick" für ein Chevron am Ende einer Rebar.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 6:06
von AUGE_OHR
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 ...
tja ... man sollte mal im Help File lesen :
XbpToolBar()
:wrappable
-
Bestimmt, ob die Schaltflächen beim Vergrößern umgebrochen werden
soweit so gut und wenn man das auf .F. stellt wird also "abgeschnitten" was ich ja für eine Rebar haben möchte.

Das funktioniert auch aber nun kommt das nächste Problem : woher soll ich "wissen" was abgeschnitten wurde ?

Ich habe nun diesen Code

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
es werden auch die "abgeschnitten" XbpToolBarButton() als o:visible = .T. zurück gegeben :angry4:
Rebar.zip
benötigt MsComCtl.OCX und ot4xb
(480.16 KiB) 504-mal heruntergeladen
die Frage ist nun wie nun feststellen soll "was" in das Menu soll ... jemand eine Idee ?

p.s. habe die Xbase++ Applikation extra "sichtbar" plaziert ... nicht das die durch VX überdeckt wurde ;)
*** o:GetVisible() in c:\ALASKA\XPPW32\Source\SYS\axctrls.prg Zeile 4206

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 7:30
von Herbert
Jimmy, ich denke, du musst die Koordinaten der einzelnen Elemente prüfen und schauen, ob diese innerhalb der Weite des Toolbars liegen. Visible sind tatsächlich alle, selbst wenn diese ausserhalb des Mutterfensters liegen. Das ist auch bei anderen Elementen so, die ausserhalb ihres Parents liegen.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 8:45
von AUGE_OHR
Herbert hat geschrieben:ich denke, du musst die Koordinaten der einzelnen Elemente prüfen und schauen, ob diese innerhalb der Weite des Toolbars liegen.
hab doch ein XbpToolbar() Demo beigefügt 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.

das 2nd Beispiel sind nun 12 XbpPushbuttons die gleich gross sind und da funktioniert es mit der Berechnung und ich kann ein Chevron Menu anzeigen ( was noch ein anderes Problem ist ...)

bitte bei der Demo die "Band" mit dem Chevron als 1st "Band" lassen (kann man verschieben) da in der Version noch ein Fehler mit der Chevron Menu vorhanden ist.
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.
hm ...

wenn ich eine Static, auf der DrawingArea, habe als Parent für ein XbPart der den gesamten Parent "überdeckt" ( gleiche Grösse ) ...
ist die Parent-Static dann noch o:visible oder nur oChild:visible ?

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 9:08
von AUGE_OHR
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 meinte das
Rebar_XbpToolbar.PNG
Rebar_XbpToolbar.PNG (12.68 KiB) 11018 mal betrachtet
aber nach dem 1st resize sortiert es sich dann.
ok also mal sehen ob ich das "addieren" kann und damit eine Menu bauen kann.

es wird allerdings wohl kein "schönes" Menu denn jetzt kommt das nächste Problem ... die Icons aus der Imagelist aber das ist ein anderes Thema.

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 22:33
von AUGE_OHR
hi,

mit dem "summieren" gibt es ein kleines Problem :
oError: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
ich hatte gedacht das ein activeX, welches als SuperClass XbpWindow() hat, doch mit o:currentsize() klar kommen müsste ... oder ?
AX_No_CurrentSize.PNG
AX_No_CurrentSize.PNG (54.96 KiB) 11010 mal betrachtet
egal auf der linken Seite sieht man im VX Debugger die IVar vom ActiveX und da gibt es o:Width ;)

also hab ich angefangen zu summieren und dann wollte ich das Menu aufbauen ...
und das nächst Problem : was schreibe ich nun in das Pop-Up Menu ?
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.
nun sieht man ja die IVars von XbpToolbarButton() aber da gibt es kein o:activate ... was schreibe ich nun in bAction ?

Re: Toolbar : mehr Buttons als Platz ?

Verfasst: Mo, 26. Jan 2015 23:59
von AUGE_OHR
ich hab es raus :blob8:

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

Re: Toolbar : mehr Buttons als Platz ? [erledigt]

Verfasst: Di, 27. Jan 2015 0:07
von AUGE_OHR
Nachtrag :
XbpToolBarButton() ist FROM AutomationObject und nicht wie XbpToolBar() von XbpActiveXControl() wie ich dachte ...
deshalb keine IVar von XbpWindow() wie o:CurrentSize oder o:SetParent() :banghead:

Re: Toolbar : mehr Buttons als Platz ? [erledigt]

Verfasst: Mi, 28. Jan 2015 22:37
von AUGE_OHR
es sieht übrigens jetzt so aus.
Rebar_ToolBar_Chevron_Menu.PNG
Rebar_ToolBar_Chevron_Menu.PNG (16.93 KiB) 10983 mal betrachtet