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! ;) |