Reacts to double-click only.. Want single-click.
BlitzMax Forums/BlitzMax Beginners Area/Reacts to double-click only.. Want single-click.
| ||
This short code works, when I double click on something in the list. I does not react to single-clicks. I can't see how this can be done?
Local MyWindow:TGadget=CreateWindow("no title", 200,200,320,240)
Local List:TGadget=CreateListBox(10,10,200,100,MyWindow)
For Local i=1 To 50
AddGadgetItem List,i
Next
Repeat
WaitEvent()
Select EventID()
Case EVENT_GADGETACTION
SetStatusText MyWindow, "Clicked on: "+GadgetItemText(List,SelectedGadgetItem(List))
End Select
Until EventID()=EVENT_WINDOWCLOSE
|
| ||
SwitchCase EVENT_GADGETACTION with Case EVENT_GADGETSELECT |
| ||
| Ah, that's nice. Thanks! |
| ||
I'm thankful for your help, but that does appear to have side-effects after all.. :( If text is inserted in a text area (both manually, and via the program-code), EVENT_GADGETSELECT becomes true. Check this code as it is, and with the REM'ed out line enabled afterwards:
Local MyWindow:TGadget=CreateWindow("no title", 200,200,420,240)
Local List:TGadget=CreateListBox(10,10,75,100,MyWindow)
Local TextBox:TGadget=CreateTextArea(100,10,300,100,MyWindow)
For Local i=1 To 50
AddGadgetItem List,i
Next
Rem
AddTextAreaText (TextBox,"This text causes an EVENT_GADGETSELECT")
End Rem
Repeat
WaitEvent()
Select EventID()
Case EVENT_GADGETSELECT
Notify "You (may) have clicked!"
AddTextAreaText (TextBox,"This sucks!"+Chr$(13))
End Select
Until EventID()=EVENT_WINDOWCLOSE
Beware, you will have to exit program by force, because there will be no way out. Any way around this? :/ |
| ||
| Well, there have been a lot of problems in the past with gadgets generating events when they are changed programatically. I made a function that allows you to work around these sorts of problems that kills events of a particular type. Don't really know how effecient it is (probably could be better), but it does the job. Try this for now: Local MyWindow:TGadget=CreateWindow("no title", 200,200,420,240)
Local List:TGadget=CreateListBox(10,10,75,100,MyWindow)
Local TextBox:TGadget=CreateTextArea(100,10,300,100,MyWindow)
For Local i=1 To 50
AddGadgetItem List,i
Next
Rem
AddTextAreaText (TextBox,"This text causes an EVENT_GADGETSELECT")
End Rem
Repeat
WaitEvent()
Select EventID()
Case EVENT_GADGETSELECT
Notify "You (may) have clicked!"
AddTextAreaText (TextBox,"This sucks!"+Chr$(13))
KillEvent(EVENT_GADGETSELECT)
End Select
Until EventID()=EVENT_WINDOWCLOSE
Function KillEvent(pID%,pID2%=0)
Local tmpList:TList = New TList
PollSystem()
tmpList.AddFirst CurrentEvent;PollEvent
While EventID() <> Null
If Not (EventID() = pID Or EventID() = pID2) Then tmpList.AddLast CurrentEvent
PollEvent()
Wend
For Local a:TEvent = EachIn tmpList
PostEvent(a)
Next
PollEvent()
EndFunctionIf anyone else considers this event generation as a bug, you may want to create a new topic regarding this in the MaxGUI Bug Reports topic. |
| ||
| All right. Thanks a lot! ;) |