Menüelemente zur Laufzeit generieren(gelöst)

Post Reply
mathias
Posts: 1
Joined: Sun Mar 17, 2013 3:51 pm
Location: Germany

Menüelemente zur Laufzeit generieren(gelöst)

Post by mathias »

Hallo!
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

// 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

// 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
Post Reply