ich möchte Menülemente zur Laufzeit generieren indem ich mit Arrayelementen und FOR...NEXT dem Menuitem ein Prompt und über ACTION einer Funktion einen Parameter zuweise.
Das mit dem Prompt funktioniert, jedoch beim Parameter wird immer das letzte Arrayelement übergeben.
- Code: Select all Expand view
- // Menüelemente zur Laufzeit generieren
#include "FIVEWIN.CH"
FUNCTION Main()
LOCAL oWnd
DEFINE WINDOW oWnd ;
TITLE "Menu Items zur Laufzeit generieren" ;
MENU BuildMenu()
ACTIVATE WINDOW oWnd
RETURN NIL
//------------------------------------------------------------//
FUNCTION BuildMenu()
LOCAL oMenu, nFor, cJahr
LOCAL aJahre := {"2010","2011","2012","2013"}
MENU oMenu
MENUITEM "Termine"
MENU
FOR nFor := 1 TO Len(aJahre)
cJahr := aJahre[nFor]
MENUITEM "Termine " + cJahr ;
ACTION MsgInfo("Aufruf der Funktion:"+CRLF+"Termine("+cJahr+")")
NEXT
ENDMENU
ENDMENU
RETURN( oMenu )
was mache ich falsch?
viele Grüße vom Bodensee
Mathias
Habe inzwischen die Lösung gefunden:
- Code: Select all Expand view
// Menüelemente zur Laufzeit generieren
#include "FIVEWIN.CH"
FUNCTION Main()
LOCAL oWnd
DEFINE WINDOW oWnd ;
TITLE "Menu Items zur Laufzeit generieren" ;
MENU BuildMenu()
ACTIVATE WINDOW oWnd
RETURN NIL
//------------------------------------------------------------//
FUNCTION BuildMenu()
LOCAL oMenu, nFor, cJahr
LOCAL aJahre := {"2010","2011","2012","2013"}
MENU oMenu
MENUITEM "Termine (geht nicht)"
MENU
FOR nFor := 1 TO Len(aJahre)
cJahr := aJahre[nFor]
MENUITEM "Termine " + cJahr ;
ACTION MsgInfo("Aufruf der Funktion:"+CRLF+"Termine("+cJahr+")")
NEXT
ENDMENU
MENUITEM "Termine (funktioniert!)"
MENU
FOR nFor := 1 TO Len(aJahre)
cJahr := aJahre[nFor]
MENUITEM "Termine " + cJahr ;
ACTION MsgInfo("Aufruf der Funktion:"+CRLF+"Termine("+SubStr(oMenuItem:cPrompt,9)+")")
NEXT
ENDMENU
ENDMENU
RETURN( oMenu )
Mathias