I'm displaying a Linked List data set within a ListIconGadget. By clicking on a line within the ListIcon, the line is highlighted.
Please tell me how to "capture" that action (click) and also how to "capture" the line number (record within the Linked List).
I'd like to be able to highlight a line, then click on an "delete" button on the pull-down menu ... and remove that line from the Linked List. Much like I can do with a spreadsheet in (say) Excel.
Thanks for the help.
ListIconGadget with Linked List
you detect a selected item via Result = GetGadgetItemState(#Gadget, Item. (you do have an event loop, I hope? If not we need to drop back a little farther) -
To associate it with an item in a linked list you could include a pointer to the element in the linked list as 'data' in the listicongadget.
see - SetGadgetItemData(#Gadget, Item, Value)
and GetGadgetItemData(#Gadget, Item, Value)
Does this get you started?
Welcome to PureBasic.
cheers
edit - I'm sure the experts can improve on this but it covers some of the basics
To associate it with an item in a linked list you could include a pointer to the element in the linked list as 'data' in the listicongadget.
see - SetGadgetItemData(#Gadget, Item, Value)
and GetGadgetItemData(#Gadget, Item, Value)
Does this get you started?
Welcome to PureBasic.
cheers
edit - I'm sure the experts can improve on this but it covers some of the basics
Code: Select all
;create a file of data
If CreateFile(0, "test.txt")
WriteStringN(0,"Item 1")
WriteStringN(0,"Item 2")
WriteStringN(0,"Item 3 ")
WriteStringN(0,"item 4")
WriteStringN(0,"Item 5")
CloseFile(0)
EndIf
;now open it up and read it into a linkedlist
NewList myString.s()
If OpenFile(0,"test.txt")
While Not Eof(0)
AddElement(myString())
myString()=ReadString(0)
Wend
CloseFile(0)
EndIf
OpenWindow(0,0,0,540,480,"Welcome to PureBasic, doctorsh",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ListIconGadget(0,50,50,400,400,"Item",236,#PB_ListIcon_GridLines|#PB_ListIcon_AlwaysShowSelection )
;fill the gadget from the list
ForEach myString()
AddGadgetItem(0, -1, myString())
SetGadgetItemData(0,Count,@myString())
Debug PeekL(@myString())
Count+1
Next
Count-1 ; to reflect the item count
MessageRequester("","Now display in debugger")
SetGadgetItemState(0, 0, #PB_ListIcon_Selected)
Repeat
Event = WaitWindowEvent()
Select EventGadget()
Case 0 ; listicongadget
While Count>=0
*mypointer = GetGadgetItemData(0,Count);retrieves the stored pointer
Debug PeekS(PeekL(*mypointer) )
Count-1
Wend
EndSelect
Until Event = #PB_Event_CloseWindow

