FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support Menüelemente zur Laufzeit generieren(gelöst)
Posts: 1
Joined: Sun Mar 17, 2013 03:51 PM
Menüelemente zur Laufzeit generieren(gelöst)
Posted: Mon Mar 18, 2013 06: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 (fw): Select all Collapse
// 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 (fw): Select all Collapse
// 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

Continue the discussion