mal wieder die Basteleien am Menü-System:
Code: Alles auswählen
FUNCTION GenerateMenu()
Local oBar
oBar := SetAppWindow():menuBar()
oBar:addItem({"~File", {|mp1, mp2, self| MenuSubFile(mp1, mp2, self)}})
oBar:addItem({"~Edit", {|mp1, mp2, self| MenuSubEdit(mp1, mp2, self)}})
oBar:addItem({"~Window", {|mp1, mp2, self| MenuSubWindow(mp1, mp2, self)}})
RETURN (.T.)
FUNCTION MenuSubFile(mp1, mp2, oBar)
Local aPos, aSize
Local cCaption
Local lDone
Local oSub
cCaption := oBar:getItem(mp1)[1]
oSub := Xbpmenu():new(oBar):create()
oSub:Title := cCaption
oSub:addItem({"~Show", {|| ShowMe(1)}})
oSub:addItem({"~Tell", {|| ShowMe(2)}})
oSub:addItem({"E~xit", {|| PostAppEvent(xbeP_Close)}})
lDone := oBar:setItem(mp1, {oSub, NIL})
lDone := oBar:selectItem(mp1)
RETURN (lDone)
Mit setItem() ersetze ich das bisherige Item im XbpMenuBar() und versuche dann, über die Methode selectItem() den gerade geänderten Eintrag des XbpMenuBar() auszuwählen. Meinem Verständnis nach sollte der durch diese Methode ausgewählt und damit aufgeklappt werden.
Die Methode selbst liefert ein .T. zurück, der XbpMenuBar() Eintrag wird jedoch nicht ausgewählt. Hat einer von Euch eine Idee, ob ich da einen Denkfehler habe, oder ob es ein Fehler des Laufzeitsystems ist?
Hmmm, manche Fragen erübrigen sich nach der Lektüre der Dokumentation ... selectItem() setzt die Default-Auswahl für ein Menü. Was ich suche, ist ein Ereignis, mit dem ich aus dem Programm heraus das Menü "aufklappen" kann.