Seite 1 von 1

Bug im CreatePopUpMenu() ???

Verfasst: 28.03.2014 18:55
von Then
Hallo,

habe mir nen MP3 Player geschrieben und da arbeite ich mit der Rechten Maustaste. Ich frage die rechte Maustaste in einem ListIconGadget ab und nur da wird ein PopUp eingeblendet. Und das auch nur dann wenn auch ein Eintrag gewählt wurde.

Der Code sieht nach der Abfrage des ListIconGadget so aus :

Code: Alles auswählen

...
     Case 110
      Select EventType() 
       Case #PB_EventType_RightClick
        numm$=GetGadgetText(110)
        If numm$<>""
         DisplayPopupMenu(2,DJh)  ; stelle jetzt das Popup-Menü dar 
          Select WindowEvent() 
           Case #PB_Event_Menu            ; ein Eintrag des Popup-Menüs wurde angeklickt 
            Select EventMenu()  
             Case 101
              DEBUG "Eintrag 1"
             Case 102
              Debug "Eintrag 2"
            Endselect
          endif
       Endselect
....
den ganzen Code will ich nicht posten, aber. In PB 5.22 geht das nicht während der unveränderte Code in 5.11 einwandfrei geht. In 5.22 wird die Auswahl 101 oder 102 einfach nicht mehr ausgewertet. Hat noch jemand das gleiche Problem ?? Wichtig, das Popup nur über nem ListIconGadget.

__________________________________________________
Thread verschoben
Bugs>Anfänger
28.03.2014
RSBasic

Re: Bug im CreatePopUpMenu() ???

Verfasst: 28.03.2014 19:03
von ts-soft
Innerhalb des EventLoop einen zweiten zu integrieren ist ja wohl nicht der Sinn der Sache :wink:

Gruß
Thomas

Re: Bug im CreatePopUpMenu() ???

Verfasst: 28.03.2014 19:38
von SBond
mach es lieber so:

Code: Alles auswählen

WindowEvent = WindowEvent() 

Select WindowEvent 
	
...

EndSelect
Denn laut PB-Hilfe:
WindowEvent() gibt das nächste Ereignis aus dem "Ereignis-Queue" (Warteschlange mit Ereignissen) zurück bzw. Null, wenn es keine weiteren Ereignisse gibt.
....also nur einen Aufruf pro Schleifendurchlauf ;)
ist aber schon komisch, dass es bei dir in der PB5.11 ging.

Re: Bug im CreatePopUpMenu() ???

Verfasst: 28.03.2014 19:44
von ts-soft
Die Tatsache, das es in 5.11 geht, macht den Code nicht richtiger, somit kein Bug!

Bitte verschieben, danke :)

Re: Bug im CreatePopUpMenu() ???

Verfasst: 29.03.2014 08:42
von Then
Hm, der Code ist schon älter und ich hatte den jetzt einfach mal getestet.

Wenn ich diese Extraschleife weglasse, erscheint das Popup nur, wenn ich außerhalb des ListIconGadget klicke, nicht aber wenn ich darauf klicke. Genau das soll es aber, also frage ich erst das ListIcon ab, wenn da mit rechter Maustaste geklickt wird, dann solls Popup kommen. Dieses wird aber nicht ausgewertet, wenn ich einen Eintrag wähle.

Code: Alles auswählen

DJh=OpenWindow(0,0,0,530,270, "")
 ButtonGadget(100,10,10,250,250,"ENDE")
 ListIconGadget(110,270,10,250,250,"",240,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#LVS_NOCOLUMNHEADER|#PB_ListIcon_GridLines)
 CreatePopupMenu(2) 
 MenuItem(100,"test")
 MenuItem(101,"test1")
 MenuItem(102,"test2")
 MenuItem(103,"test3")
 MenuItem(104,"test4")
 CloseSubMenu()

For T =1 To 10
 AddGadgetItem(110,-1,Str(T))
Next

Repeat
 Delay(1)
 Event = WindowEvent()  
 Select Event
 Case #PB_Event_Menu        
  Select EventMenu()      
  Case 100 : Debug "test"
  Case 101 : Debug "test1"
  Case 102 : Debug "Test2"
  Case 103 : Debug "Test3"
  Case 104 : Debug "Test4"
  EndSelect
 Case #PB_Event_Gadget
  Select EventGadget()
  Case 110
   Select EventType() 
   Case #PB_EventType_RightClick
   If GetGadgetText(110)<>""
   DisplayPopupMenu(2,DJh)
   EndIf
   Case #PB_EventType_LeftClick 
   Debug "links"
   EndSelect
  Case 100
   End
  EndSelect 
 EndSelect 
ForEver
*EDIT* Dieser Code funktioniert mit PB 5.11, aber nicht mehr mit 5.22... Habe meinen MP3Player nun umgeschrieben (wie es oben empfohlen wurde und nun läuft er - sieht auch logischer aus, aber ist dennoch komisch. Jetzt muß ich ersmal all meine Codes durchsuchen, ob ich irgendwo das gleiche hab....THX