Ich bastle immer noch an meiner GUI herum - ich krieg es nicht hin.
Ich habe pro Menu eine Funktion, die das Menu aufbaut - das ist bei mir eine Grundvoraussetzung,
bei der ich gerne bleiben würde, damit ich meine Sources aus 25 Jahren Entwicklung nicht alle
wegschmeissen muss...
Das funktioniert soweit ganz gut.
Erst kommt die MenuBar, dann die Menus in der Leiste und dann die SubMenus.
Ab und zu hab ich aber Menus, die nur unter dem Vorbehalt zugänglich sein sollen, wenn
eine dem Menu zugeordnete Funktion den Wert .T. zurück gibt: die Funktion FncMenuInit.
Dabei kann es sich beispielsweise um eine Funktion handeln, welche Dateien öffnet.
Schlimmstenfalls habe ich dazu noch eine Funktion, die als Prolog ausgeführt werden soll - wenn
diese .F. zurück gibt, soll das Menu ebenfalls nicht zugänglich sein: die Funktion FncProlog.
Ab und zu soll nach Ausführung eines Menus eine Funktion als Epilog ausgeführt werden:
die Funktion FncEpilog.
Die Funktion FncEpilog soll nur ausgeführt werden, wenn die Funktion FncProlog den Wert
.T. zurück gegeben hat.
Ich habe versucht mit oMenu:itemSelected, dann auch mit den Slots oMenu:beginMenu und
oMenu:endMenu. Diese Slots werden bisher in meinen Prototypen nicht ausgeführt. Ich habe
die verschiedenen Diskussionen hier im Forum verfolgt, komme aber leider nicht zu einer Lösung.
Falls ich hier im falschen Forum bin oder was falsch gepostet hab, bitte ich um Entschuldigung
und einen entsprechenden Hinweis - ich möchte niemand verärgern, weil ich auch das Handling
hier im Forum nicht beherrsche.
Folgend ein Muster von der Funktion MenuEins, welche das oMenuEins aufbauen sollte.
Code: Alles auswählen
FUNCTION MenuEins(oMenuBar,Par2)
LOCAL nItem
LOCAL lInit
LOCAL aDatei
LOCAL oMenuEins
aDbf:={}
lInit:=.T.
oMenuEins:=XBPMENU():NEW(oMenuBar)
oMenuEins:TITLE:="MenuEins"
oMenuEins:CREATE()
nItem:=oMenuBar:ADDITEM({oMenu,NIL})
/*
::itemSelected wird nicht ausgeführt -
die Funktion DateienOeffnen müsste lInit zurückgeben und die
MenuOptionen SubMenuEins oder SubMenuZwei nur ausführen,
wenn lInit=.T.
Wird der Slot nur für die MenuLeiste oMenuBar ausgeführt?
*/
oMenuEins:itemSelected:={¦nItem,mp1,obj¦DateienOeffnen(aDbf,Par2)}
/*
::beginMenu wird nicht ausgeführt.
*/
oMenuEins:beginMenu:={¦¦FncProlog()}
/*
::endMenu wird nicht ausgeführt.
*/
oMenuEins:endMenu:={¦¦FncEpilog()}
oMenuEins:ADDITEM{"Eins ausführen",FunktionEins()}
oMenuEins:ADDITEM{"Zwei ausführen",FunktionZwei()}
RETURN(.T.)
Kann jemand helfen?
Herzliche Grüsse!
Grilli