Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?
Posted: Wed Oct 22, 2025 8:28 pm
Hi Randy
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
; Added missing event types
Procedure CheckEvent()
Static actgadget = -1
Static lastgadget = -1
actgadget = GetActiveGadget()
If actgadget <> lastgadget
If lastgadget >= 0
Select GadgetType(lastgadget)
Case #PB_GadgetType_ListIcon, #PB_GadgetType_ListView
PostEvent(#PB_Event_Gadget, GetActiveWindow(), lastgadget, #PB_EventType_LostFocus)
EndSelect
EndIf
If actgadget >= 0
Select GadgetType(actgadget)
Case #PB_GadgetType_ListIcon, #PB_GadgetType_ListView
PostEvent(#PB_Event_Gadget, GetActiveWindow(), actgadget, #PB_EventType_Focus)
EndSelect
EndIf
lastgadget = actgadget
EndIf
EndProcedure
If OpenWindow(0, 100, 100, 300, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 5, 5, 290, 260, "Number", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
For i=1 To 100
AddGadgetItem(0, -1, Str(i))
Next
StringGadget(1,5,270,290,24,"This is a test")
Repeat
event = WaitWindowEvent()
CheckEvent()
Select Event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_Focus
Debug "Focus"
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)
Case #PB_EventType_LostFocus
Debug "LostFocus"
RemoveKeyboardShortcut(0, #PB_Shortcut_Delete)
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 10
item = GetGadgetState(0)
If item <> -1
RemoveGadgetItem(0, item)
If item >= CountGadgetItems(o)
item - 1
EndIf
SetGadgetState(0, item)
EndIf
EndSelect
EndSelect
ForEver
EndIf
Code: Select all
Macro DeleteGadgetItem(Gadget, Item)
RemoveGadgetItem(Gadget, Item)
EndMacro
Code: Select all
; Define
EnableExplicit
Enumeration
#Win
; EndEnumeration : Enumeration
#GadgetList
#GadgetString
; EndEnumeration : Enumeration
#KeyDeleteItems
EndEnumeration
#Undefined=-#True
; EndDefine
Procedure Main()
Protected Event
Protected ActiveGadget=#Undefined
Protected row
Protected i
If OpenWindow(#Win, 100, 100, 300, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#GadgetList, 5, 5, 290, 260, "Number", 240, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_MultiSelect)
StringGadget(#GadgetString,5,270,290,24,"This is a test")
For i=1 To 100
AddGadgetItem(#GadgetList,#Undefined," Line "+Str(i))
Next
Repeat
Event=WaitWindowEvent()
i=Bool(GetActiveGadget()=#GadgetList)
If i<>ActiveGadget
ActiveGadget=i
If i
AddKeyboardShortcut(#Win, #PB_Shortcut_Delete,#KeyDeleteItems)
Else
RemoveKeyboardShortcut(#Win, #PB_Shortcut_Delete)
EndIf
EndIf
Select Event
;Case #PB_Event_Gadget
; Select EventGadget()
; EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #KeyDeleteItems
row=GetGadgetState(#GadgetList)
If ActiveGadget And row>#Undefined
i=CountGadgetItems(#GadgetList)
While i
i-1
If GetGadgetItemState(#GadgetList,i)
RemoveGadgetItem(#GadgetList,i)
If i<row
row-1
EndIf
EndIf
Wend
If row=CountGadgetItems(#GadgetList)
row-1
EndIf
SetGadgetState(#GadgetList,row)
EndIf
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndProcedure
Main()Duhhhh <<THats Duh as in "Dummy me".mk-soft wrote: Thu Oct 23, 2025 8:00 amCode: Select all
Macro DeleteGadgetItem(Gadget, Item) RemoveGadgetItem(Gadget, Item) EndMacro
Code: Select all
Procedure DelItem()
item = GetGadgetState(0)
result = MessageRequester("Warning","Delete the selected item ?",#PB_MessageRequester_YesNo| #PB_MessageRequester_Warning)
If result = #PB_MessageRequester_Yes
RemoveGadgetItem(0, item)
EndIf
EndProcedure
If OpenWindow(0, 100, 100, 300, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 5, 5, 290, 260, "Number", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
For i=0 To 100
AddGadgetItem(0, -1, Str(i))
Next
StringGadget(1,5,270,290,24,"This is a test")
BindGadgetEvent(0,@DelItem(),#PB_EventType_LeftDoubleClick)
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
Code: Select all
Procedure DelItem()
item = GetGadgetState(0)
result = MessageRequester("Warning","Delete the selected item ?",#PB_MessageRequester_YesNo| #PB_MessageRequester_Warning)
If result = #PB_MessageRequester_Yes
RemoveGadgetItem(0, item)
EndIf
EndProcedure
If OpenWindow(0, 100, 100, 300, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 5, 5, 290, 260, "Number", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
For i=0 To 100
AddGadgetItem(0, -1, Str(i))
Next
StringGadget(1,5,270,290,24,"This is a test")
BindGadgetEvent(0,@DelItem(),#PB_EventType_LeftDoubleClick)
Repeat
Select WaitWindowEvent(1)
Case 0
If GetActiveGadget() = 0
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)
Else
RemoveKeyboardShortcut(0, #PB_Shortcut_Delete)
EndIf
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
Select EventMenu()
Case 10
item = GetGadgetState(0)
result = MessageRequester("Warning","Delete the selected item ?",#PB_MessageRequester_YesNo| #PB_MessageRequester_Warning)
If result = #PB_MessageRequester_Yes
RemoveGadgetItem(0, item)
EndIf
EndSelect
EndSelect
Until Quit = 1
EndIf