Bug im CreatePopUpMenu() ???

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Then
Beiträge: 285
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Bug im CreatePopUpMenu() ???

Beitrag 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
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bug im CreatePopUpMenu() ???

Beitrag von ts-soft »

Innerhalb des EventLoop einen zweiten zu integrieren ist ja wohl nicht der Sinn der Sache :wink:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Re: Bug im CreatePopUpMenu() ???

Beitrag 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.
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bug im CreatePopUpMenu() ???

Beitrag von ts-soft »

Die Tatsache, das es in 5.11 geht, macht den Code nicht richtiger, somit kein Bug!

Bitte verschieben, danke :)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Then
Beiträge: 285
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: Bug im CreatePopUpMenu() ???

Beitrag 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
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Antworten