[SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Just starting out? Need help? Post your questions and find answers here.
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4991
Joined: Sun Apr 12, 2009 6:27 am

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by RASHAD »

Hi Randy
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)
Egypt my love
Randy Walker
Addict
Addict
Posts: 1108
Joined: Sun Jul 25, 2004 4:21 pm
Location: USoA

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by Randy Walker »

OHhhh Ok. I didn't even notice that AddKeyboardShortcut in there. I did wonder why there was a windowtimer in there. Still don't really understand why it was necessary.
- - - - - - - - - - - - - - - -
Randy
I *never* claimed to be a programmer.
User avatar
mk-soft
Always Here
Always Here
Posts: 6313
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by mk-soft »

I don't like about timers in this case.
Better add the missing event types Focus and LostFocus for list gadgets

Update

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
Last edited by mk-soft on Thu Oct 23, 2025 8:05 am, edited 1 time in total.
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
Randy Walker
Addict
Addict
Posts: 1108
Joined: Sun Jul 25, 2004 4:21 pm
Location: USoA

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by Randy Walker »

Now we're getting down right complicated... Just to allow user item line delete. :shock:
- - - - - - - - - - - - - - - -
Randy
I *never* claimed to be a programmer.
Randy Walker
Addict
Addict
Posts: 1108
Joined: Sun Jul 25, 2004 4:21 pm
Location: USoA

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by Randy Walker »

Simple enough to AddGadgetItem, so just seems to me we need a DeleteGadgetItem just to balance the scale. :?
- - - - - - - - - - - - - - - -
Randy
I *never* claimed to be a programmer.
User avatar
mk-soft
Always Here
Always Here
Posts: 6313
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by mk-soft »

Code: Select all

Macro DeleteGadgetItem(Gadget, Item)
  RemoveGadgetItem(Gadget, Item)
EndMacro
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
Michael Vogel
Addict
Addict
Posts: 2819
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by Michael Vogel »

It's getting more and more complex...

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()
Randy Walker
Addict
Addict
Posts: 1108
Joined: Sun Jul 25, 2004 4:21 pm
Location: USoA

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by Randy Walker »

mk-soft wrote: Thu Oct 23, 2025 8:00 am

Code: Select all

Macro DeleteGadgetItem(Gadget, Item)
  RemoveGadgetItem(Gadget, Item)
EndMacro
Duhhhh <<THats Duh as in "Dummy me". :oops:
Will have to test that out...
- - - - - - - - - - - - - - - -
Randy
I *never* claimed to be a programmer.
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4991
Joined: Sun Apr 12, 2009 6:27 am

Re: [SOLVED] (end)User Friendly Way to delete ListIconGadget line?

Post by RASHAD »

Hi Randy
This is the last cents I have :D
Left DbleClick to Delete

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
Delete w Mouse and Keyboard :

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
I am almost bankrupted :mrgreen:
Egypt my love
Post Reply