Thanks for your help.
Also thanks to Jim Brown for this :
For handling lists of strings I use this method:
First, I create a TList:
To add strings to the list:
Now I create a TLink and point it the the FIRST item in my list:
From here, I can iterate through the list both forwards and backwards. (Note how I wrap around the list if I go past the start/end) ...
FORWARDS:
BACKWARDS:
If I want to find out the contents of the item in the list which 'link' is currently pointing at I do this:
To insert an entry AFTER the one being pointed to by the TLink:
To insert an entry BEFORE the one being pointed to by the TLink:
Putting it all together:
it should be a tutorial !!!
http://www.blitzbasic.com/Community/posts.php?topic=51996&hl=prevlink
Also thanks to Jim Brown for this :
For handling lists of strings I use this method:
First, I create a TList:
Global mylist:TList=New TList
To add strings to the list:
mylist.AddLast "Apple" mylist.AddLast "Banana" mylist.AddLast "Pear" etc..
Now I create a TLink and point it the the FIRST item in my list:
Global link:TLink=mylist.FirstLink()
From here, I can iterate through the list both forwards and backwards. (Note how I wrap around the list if I go past the start/end) ...
FORWARDS:
link=link.NextLink() If link=Null link=mylist.FirstLink()
BACKWARDS:
link=link.PrevLink() If link=Null link=mylist.LastLink()
If I want to find out the contents of the item in the list which 'link' is currently pointing at I do this:
text$=String(link.Value())
To insert an entry AFTER the one being pointed to by the TLink:
mylist.InsertAfterLink("Some new fruit",link)
To insert an entry BEFORE the one being pointed to by the TLink:
mylist.InsertBeforeLink("Some new fruit",link)
Putting it all together:
Strict ' Initialise a TList called mylist ' This is used to hold a list of strings Global mylist:TList=New TList ' add some items to mylist mylist.AddLast "Apple" mylist.AddLast "Banana" mylist.AddLast "Pear" mylist.AddLast "Blackberry" mylist.AddLast "Peach" mylist.AddLast "Mango" ' Initialise a TLink called link ' Set it to point to the first item in mylist Global link:TLink=mylist.FirstLink() ' store the string from the first item into selected$ Global selected$=String(link.Value()) ' open a small graphic window AppTitle = "Lists - Next/Previous example" Graphics 400,300,0,30|SOFTSYNC SetClsColor $aa,$aa,$aa Repeat ' if user presses ESCAPE break out of the loop If KeyHit(KEY_ESCAPE) Exit ' if user presses DOWN ARROW move to next item in list If KeyHit(KEY_DOWN) link=link.NextLink() If link=Null link=mylist.FirstLink() selected$=String(link.Value()) EndIf ' if user presses UP ARROW move to previous item in list If KeyHit(KEY_UP) link=link.PrevLink() If link=Null link=mylist.LastLink() selected$=String(link.Value()) EndIf ' If DEL pressed remove selected item ' Now point to the first item in the remaining list ' If the list is empty exit from the loop If KeyHit(KEY_DELETE) mylist.Remove selected$ link=mylist.FirstLink() If link=Null Exit selected$=String(link.Value()) EndIf ' insert an entry AFTER the currently selected one If KeyHit(KEY_A) mylist.InsertAfterLink("Lemon "+Rand(100),link) EndIf ' insert an entry BEFORE the currently selected one If KeyHit(KEY_B) mylist.InsertBeforeLink("Lemon"+Rand(100),link) EndIf ' if user presses RETURN key show item selected If KeyHit(KEY_RETURN) Notify "Your choice is "+selected$ EndIf ' show list and highlight the 'selected' item Cls SetColor $88,$44,$00 DrawText "UP/DOWN = select item",10,10 DrawText "RETURN = confirm selection",10,24 DrawText "DEL = Remove selected item",10,38 DrawText "A = Insert 'Lemon' AFTER selected item",10,52 DrawText "B = Insert 'Lemon' BEFORE selected item",10,66 Local y=100 For Local l$=EachIn mylist SetColor $22,$22,$22 If l$=selected$ SetColor $ff,$ff,$ff DrawText l$,40,y y:+16 Next Flip Forever End
it should be a tutorial !!!
http://www.blitzbasic.com/Community/posts.php?topic=51996&hl=prevlink