Seite 1 von 1

Toolbar / Statusbar "activate"

Verfasst: Mo, 19. Jan 2015 22:19
von AUGE_OHR
wenn ich mir XbpToolBar() / XbpToolBarButton() ansehe habe ich kein Codeblock Slot "activate" ?

ich frage deshalb weil man es ja wie Buttons benutzt wird und ein "activate" Slot doch logisch wäre.

ich habe zwar über den

Code: Alles auswählen

XbpToolBarButton():index
die Möglichkeit einer auswertung -> Aktion aber der (unschlagbare) Vorteil von Codeblöcken ist ja das man sie ausführen kann "wann" und "wo" ( Thread ) man will !

ich kann ja auch bei

Code: Alles auswählen

XbpToolBarButton():addItem( [<cCaption>], [<cKey>] ) => <oMenu>
nichts weiter eingeben was eine Aktion bewirken könnte.

dito. mit XbpStatusBar() / XbpStatusBarPanel() was man auch Button (F1-F12) mässig verwenden könnte.
was ich bekomme ist o:index, o:caption etc ... aber kein Codeblock Slot zum evaluieren :(

wie hab ihr das gelöst ?

Re: Toolbar / Statusbar "activate"

Verfasst: Di, 20. Jan 2015 17:26
von Werner_Bayern

Code: Alles auswählen

oStatusbar:panelClick := {|oPanel| if(oPanel:index == 3, if(.not. startedatei("calc.exe"),;
   fehler("Taschenrechner nicht gefunden!"), ), if(oPanel:index == 4, htmlAnzeige(, oDlg), ))}

Re: Toolbar / Statusbar "activate"

Verfasst: Di, 20. Jan 2015 23:54
von AUGE_OHR
hi,
Werner_Bayern hat geschrieben:

Code: Alles auswählen

oStatusbar:panelClick := {|oPanel| if(oPanel:index == 3, if(.not. startedatei("calc.exe"),;
   fehler("Taschenrechner nicht gefunden!"), ), if(oPanel:index == 4, htmlAnzeige(, oDlg), ))}
das ist genau das was ich meine ! es wird, über den Index, eine "feste" Reihenfolge vorgelegt.

wenn ich nun einen Panel löschen / neu hinzufüge stimmt das ganz ja nicht mehr :banghead:

deshalb spreche ich ja auch von einem separaten "activate" Codeblock Slot den ich dem jeweiligen Panel zuordnen kann.

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 0:12
von Werner_Bayern
Dann benutze halt den :key anstatt :index.

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 2:09
von AUGE_OHR
Werner_Bayern hat geschrieben:Dann benutze halt den :key anstatt :index.
es geht doch nicht darum "wie" ich es identifiziere sondern um die Belegung von "einem" Codeblock durch o:panelClick.

ideal wäre doch diese Syntax

Code: Alles auswählen

oStatusbar:panelClick := {|oPanel| EVAL(oPanal:activate) }
d.h. jedes Panel Item sollte einen activeate Codeblock Slot haben den man EVALuieren kann.

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 7:49
von Herbert
Jimmy, du hast recht. Die Toolbar ist in der gegebenen Form nicht mehr zeitgemäss. Man sollt sie z.B auch vom Fenster loslösen können.
Bei mir ist das daher sehr klassisch codiert:

Code: Alles auswählen

oToolBar:addItem(, ID_BTN_DET_BMP,,,,, "ETOOL_OKD"):tooltiptext := "Detailseite speichern"
...
oToolBar:buttonClick := {|oButton| ::EToolbEvent( oButton )}

METHOD AdressF:EToolbEvent( oButton )
LOCAL cKey:=oButton:key
DO CASE
CASE cKey == "ETOOL_OK"
...

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 11:53
von AUGE_OHR
Herbert hat geschrieben:Die Toolbar ist in der gegebenen Form nicht mehr zeitgemäss.
Man sollt sie z.B auch vom Fenster loslösen können.
so wie in Office oder den meisten Browser ... das nennt man Rebar welches einen "Container" bereitstellt.
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 13:37
von Werner_Bayern
Servus Jimmy,

was hindert Dich daran, den Codeblock als Text in :key oder :cargo reinzuschreiben und diesen dann makrozuexpandieren?

Re: Toolbar / Statusbar "activate"

Verfasst: Mi, 21. Jan 2015 23:58
von AUGE_OHR
Werner_Bayern hat geschrieben:was hindert Dich daran, den Codeblock als Text in :key oder :cargo reinzuschreiben und diesen dann makrozuexpandieren?
hm ... in den o:key Slot würde ich keinen Codeblock legen aber in den o:Cargo Slot ... das könnte man es machen.

es ging mir bei den beide activeX darum das Windows zwar kein Codeblock kennt aber es für Xbase++ doch "sinnvoll" wäre wenn man einen o:Activate Slot für einen Codeblock hätte.