Page 1 of 1

Menüelemente zur Laufzeit generieren(gelöst)

PostPosted: Mon Mar 18, 2013 6:21 pm
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  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