When I left click it works fine I'm getting a single message but when I double click I am getting 3 messages: two left click an one double click
Is this normal or I made a mistake in my code ???
The problem is I have to detect both single and double clicks, generating separate actions for both.
Code: Select all
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Global Window_0
Global Canvas_0, ListIcon_0, Panel_0, Font_0
Global p_select=0, last_panel_no.b=10, panel_no=0, icon_select
Procedure OpenWindow_0(x = 0, y = 0, width = 1000, height = 570)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "EmLab", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
Canvas_0 = CanvasGadget(#PB_Any, 0, 0, 1000, 540,#PB_Canvas_Container)
SetGadgetColor(Canvas_0, #PB_Gadget_BackColor, RGB(200,200,200))
Font_0 = LoadFont(#PB_Any, "Segoe UI Semibold", 10)
ListIcon_0 = ListIconGadget(#PB_Any, WindowWidth(Window_0)-200, 30, 200, 540, "", 100, #PB_ListIcon_GridLines)
If LoadImage(0, #PB_Compiler_Home+"Examples\Sources\Data\cdplayer.ico")
SetGadgetAttribute(ListIcon_0, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)
AddGadgetItem(ListIcon_0, 1, "Image 1", ImageID(0))
AddGadgetItem(ListIcon_0, 2, "Image 2", ImageID(0))
AddGadgetItem(ListIcon_0, 3, "Image 3", ImageID(0))
;Debug GetGadgetFont(ListIcon_0)
EndIf
EnableGadgetDrop(Canvas_0, #PB_Drop_Text, #PB_Drag_Copy)
Panel_0 = PanelGadget(#PB_Any, WindowWidth(Window_0)-200, 5, 200, 25)
SetGadgetFont(Panel_0, FontID(Font_0))
AddGadgetItem(Panel_0, 1, "Item1")
AddGadgetItem(Panel_0, 2, "Item2")
AddGadgetItem(Panel_0, 3, "Item3")
AddGadgetItem(Panel_0, -1, "Item4")
AddGadgetItem(Panel_0, -1, "Misc")
SetGadgetColor(Panel_0, #PB_Gadget_BackColor, RGBA(196, 217, 254, 255))
EndProcedure
Procedure Fill_Icons()
SetGadgetAttribute(ListIcon_0, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)
AddGadgetItem(ListIcon_0, 1, "Image 1", ImageID(0))
AddGadgetItem(ListIcon_0, 2, "Image 2", ImageID(0))
AddGadgetItem(ListIcon_0, 3, "Image 3", ImageID(0))
;Debug GetGadgetFont(ListIcon_0)
EndProcedure
Procedure SizeWindowHandler()
Debug "Evènement - Redimensionnement- de la fenêtre #" + EventWindow()
; Redimensionne le gadget pour l'adapter aux nouvelles dimensions de la fenêtre
;
ResizeGadget(Canvas_0, #PB_Ignore, #PB_Ignore, WindowWidth(Window_0), WindowHeight(Window_0)-30)
ResizeGadget(ListIcon_0, WindowWidth(Window_0)-200, #PB_Ignore, #PB_Ignore, WindowHeight(Window_0)-30)
ResizeGadget(Panel_0, WindowWidth(Window_0)-200, #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
; Case #PB_Event_Menu
; Select EventMenu()
; EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Canvas_0
Select EventType()
Case #PB_EventType_MouseWheel
Debug "Souris Wheel"
Debug GetGadgetAttribute(Canvas_0, #PB_Canvas_WheelDelta)
If GetGadgetAttribute(Canvas_0, #PB_Canvas_MouseX) > WindowWidth(Window_0)-200 ; dans la zone du panel
; Debug "Allo"
p_select - GetGadgetAttribute(Canvas_0, #PB_Canvas_WheelDelta)
If(p_select < 0)
p_select = 0
Else
If p_select > 4
p_select = 4
EndIf
EndIf
panel_no = p_select
SetGadgetState(Panel_0, p_select)
Debug "Selection: " + panel_no
If GetGadgetState(Panel_0) <> 0
ClearGadgetItems(ListIcon_0)
Else
If CountGadgetItems(ListIcon_0) = 0
Fill_Icons()
;last_panel_no = panel_no
EndIf
EndIf
EndIf
;Debug GetActiveGadget()
EndSelect
Case Panel_0
If EventType() = #PB_EventType_Change
panel_no = GetGadgetState(Panel_0)
Debug "Panel Change " + panel_no
If panel_no <> 0
ClearGadgetItems(ListIcon_0)
Else
If CountGadgetItems(ListIcon_0) = 0
Fill_Icons()
EndIf
EndIf
EndIf
Case ListIcon_0
If EventType() = #PB_EventType_LeftDoubleClick
Debug "Left doubleclick"
If GetGadgetState(ListIcon_0) = -1
Debug "No selection"
Else
icon_select = GetGadgetState(ListIcon_0)
Debug "icon selection: " + icon_select + " " + GetGadgetItemText(ListIcon_0, icon_select)
EndIf
Else
If EventType() = #PB_EventType_LeftClick
Debug "Left click"
If GetGadgetState(ListIcon_0) = -1
Debug "No selection"
Else
icon_select = GetGadgetState(ListIcon_0)
Debug "icon selection: " + icon_select + " " + GetGadgetItemText(ListIcon_0, icon_select)
EndIf
EndIf
EndIf
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
;START
OpenWindow_0()
BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
Repeat
event = WaitWindowEvent(1)
If Not Window_0_Events(event)
End
EndIf
ForEver