Page 2 of 2

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

Posted: Wed Oct 22, 2025 8:28 pm
by RASHAD
Hi Randy
AddKeyboardShortcut(0, #PB_Shortcut_Delete,10)

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

Posted: Wed Oct 22, 2025 9:52 pm
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.

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

Posted: Wed Oct 22, 2025 11:14 pm
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

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

Posted: Thu Oct 23, 2025 12:18 am
by Randy Walker
Now we're getting down right complicated... Just to allow user item line delete. :shock:

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

Posted: Thu Oct 23, 2025 12:23 am
by Randy Walker
Simple enough to AddGadgetItem, so just seems to me we need a DeleteGadgetItem just to balance the scale. :?

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

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

Code: Select all

Macro DeleteGadgetItem(Gadget, Item)
  RemoveGadgetItem(Gadget, Item)
EndMacro

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

Posted: Thu Oct 23, 2025 8:13 am
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()

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

Posted: Thu Oct 23, 2025 10:48 am
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...

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

Posted: Thu Oct 23, 2025 11:21 am
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: