Seite 1 von 1

doppelter Codeblock wie bei oMenu:addItem()

Verfasst: So, 02. Sep 2012 11:05
von AUGE_OHR
hi,

ich möchte ein Menu dynamisch aufbauen und die Auswahl weiter verwenden.

Code: Alles auswählen

LOCAL xValue := 0

FOR i := 1 TO nLen
   cKey     := oClickBtn:ButtonMenuItem:aMenuItems[i][2]
   cCaption := oClickBtn:ButtonMenuItem:aMenuItems[i][3]    

   bBlock := { '"+cCaption+"',{ || xValue := Tumal('"+cKey+"'), lExit := .T. } }"
   ::oMenu:AddItem(&bBlock)
NEXT

::oMenu:PopUp ( oClickBtn, {400,400}, 2 , XBPMENU_PU_DEFAULT )

nEvent := xbe_None
DO WHILE !lExit
   nEvent := AppEvent ( @mp1, @mp2, @oXbp )
   do case
      case nEvent == xbeP_Quit
         QUIT   // AppQuit()
   OTHERWISE
      oXbp:HandleEvent ( nEvent, mp1, mp2 )
   ENDCASE
ENDDO
TONE(1234)   // bin raus
? xValue
RETURN

FUNCTION Tumal(cKey)
Msgbox(cKey)
RETURN cKey
er baut damit ein Menu auf. Die Caption ist "richtig" und der Key wird in der Msgbox() ebenfalls "richtig" angezeigt.
nun gebe ich ja cKey zurück ... aber es kommt nicht an ... kein TONE() ... :(

ich hänge also noch in der WHILE !lExit Schleife ... hm ... ok also mal als PRIVATE
jetzt komm ein TONE() aber er sagt immer noch 0 obwohl die MsgBox() es vorher richtig anzeigte ... hm ... auch die dann als PRIVATE

ok jetzt "stimmt" das Ergebniss aber die beiden PRIVATE gefallen mir nun überhaupt nicht :banghead:

geht das nicht irgendwie eleganter ?