wie kann man ein vorhandenes Menu "saven" ?
Ich baue wie gewöhnlich ein Menu mit Submenus auf. In der Function
ChangeMenu() will ich nun die einzelnen Menupunkte in ein Array
aufnehmem. Dazu stelle ich mit oMenu:numItems() fest wie viele Items
ich habe und versuche die in der Schleife mit oMenu:getItem(i) zu
bekommen ... aber ich bekomme nur {XbpMenu, NIL, NIL, NIL}
Code: Alles auswählen
#include "Appevent.ch"
STATIC aMenu := {}
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oMenuBar, oSubMenu, aItem
Setcolor( "N/W")
CLS
SetAppWindow():useShortCuts := .T.
oMenuBar := SetAppWindow():MenuBar()
oSubMenu := XbpMenu():new(oMenuBar):create()
oSubMenu:title := "~Prozedural"
oSubMenu:addItem( { "Prozedur ~1", {|| MyFunction(1) }} )
oSubMenu:addItem( { "Prozedur ~2", {|| MyFunction(2) }} )
oMenuBar:addItem( { oSubMenu, NIL } )
oSubMenu := XbpMenu():new(oMenuBar):create()
oSubMenu:title := "~Funktional"
oSubMenu:addItem( { "Funktion ~1", {|| MyFunction(3) } } )
oSubMenu:addItem( { "Funktion ~2", {|| MyFunction(4) } } )
oSubMenu:addItem( { "~Ende" , {|| MyFunction(5) } } )
oMenuBar:addItem( { oSubMenu, NIL } )
oSubMenu := XbpMenu():new(oMenuBar):create()
oSubMenu:title := "~Change"
oSubMenu:addItem( { "~Change Menu", {|| ChangeMenu( SetAppWindow() ) } } )
oMenuBar:addItem( { oSubMenu, NIL } )
// Event loop = Programmsteuerung
nEvent := 0
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:HandleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
PROCEDURE MyFunction(nNum)
? "Hallo "+STR(nNum)
RETURN
FUNCTION ChangeMenu( oDraw )
LOCAL oMenu := oDraw:menuBar()
LOCAL nZahl := oMenu:numItems()
LOCAL i
aMenu := {}
FOR i := 1 TO nZahl
AADD(aMenu, oMenu:getItem(i) )
? aMenu[i]
NEXT
ALTD()
oMenu:setItem( 1,{ "~Artikel ", { || MyFunction(6) } }, )
oMenu:setItem( 2,{ "~Kunden ", { || MyFunction(7) } }, )
oMenu:setItem( 3,{ "~Ende ", { || MyFunction(8) } }, )
RETURN .T.
a.) wieso gibt er beim ersten "Change" mit {XbpMenu, NIL, NIL, NIL} ?
b.) mit oMenu:setItem( 1, ...) ersetze ich das erste Item. Wenn ich nun
nochmals "Change" aufrufe zeigt er mir "richtig" (?)
{~Artikel , { || MyFunction(6) }, NIL, NIL}
c.) wie komme ich an die "SubMenus" ?