Menüelemente zur Laufzeit generieren(gelöst)

Menüelemente zur Laufzeit generieren(gelöst)

Postby mathias » Mon Mar 18, 2013 6:21 pm

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
mathias
 
Posts: 1
Joined: Sun Mar 17, 2013 3:51 pm
Location: Germany, Konstanz

Return to All products support

Who is online

Users browsing this forum: No registered users and 2 guests