doppelter Codeblock wie bei oMenu:addItem()

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

doppelter Codeblock wie bei oMenu:addItem()

Beitrag 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 ?
gruss by OHR
Jimmy
Antworten