SpookMeister Posted April 12, 2006 Share Posted April 12, 2006 How do you go about working with dynamic data with a listview? For instance: You want a basic GUI with nothing but a listview and a button. You want the listview to offer listitems based on this .ini file [sampledata] item1=abc item2=def item3=ghi The .ini file could have any number of items under the sampledata header but you want to display the items in the listview and to be able to do something acording to which item is selected when the button is pressed. I'm just looking for pointers, but actual or pseudo code would also be welcome. Thanks, -Spook [u]Helpful tips:[/u]If you want better answers to your questions, take the time to reproduce your issue in a small "stand alone" example script whenever possible. Also, make sure you tell us 1) what you tried, 2) what you expected to happen, and 3) what happened instead.[u]Useful links:[/u]BrettF's update to LxP's "How to AutoIt" pdfValuater's Autoit 1-2-3 Download page for the latest versions of Autoit and SciTE[quote]<glyph> For example - if you came in here asking "how do I use a jackhammer" we might ask "why do you need to use a jackhammer"<glyph> If the answer to the latter question is "to knock my grandmother's head off to let out the evil spirits that gave her cancer", then maybe the problem is actually unrelated to jackhammers[/quote] Link to comment Share on other sites More sharing options...
Uten Posted April 12, 2006 Share Posted April 12, 2006 Don't the help file say it all? #include <GUIConstants.au3> GUICreate("listview items",220,250, 100,200,-1,$WS_EX_ACCEPTFILES) GUISetBkColor (0x00E0FFFF) ; will change background color $listview = GUICtrlCreateListView ("col1 |col2|col3 ",10,10,200,150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton ("Value?",75,170,70,20) $item1=GUICtrlCreateListViewItem("item2|col22|col23",$listview) $item2=GUICtrlCreateListViewItem("item1|col12|col13",$listview) $item3=GUICtrlCreateListViewItem("item3|col32|col33",$listview) $input1=GUICtrlCreateInput("",20,200, 150) GUICtrlSetState(-1,$GUI_DROPACCEPTED) ; to allow drag and dropping GUISetState() GUICtrlSetData($item2,"ITEM1") GUICtrlSetData($item3,"||COL33") GUICtrlDelete($item1) Do $msg = GUIGetMsg () Select Case $msg = $button MsgBox(0,"listview item",GUICtrlRead(GUICtrlRead($listview)),2) Case $msg = $listview MsgBox(0,"listview", "clicked="& GUICtrlGetState($listview),2) EndSelect Until $msg = $GUI_EVENT_CLOSE $var = IniReadSectionNames(@WindowsDir & "\win.ini") If @error Then MsgBox(4096, "", "Error occured, probably no INI file.") Else For $i = 1 To $var[0] MsgBox(4096, "", $var[$i]) Next EndIf $var = IniReadSection("C:\Temp\myfile.ini", "section2") If @error Then MsgBox(4096, "", "Error occured, probably no INI file.") Else For $i = 1 To $var[0][0] MsgBox(4096, "", "Key: " & $var[$i][0] & @CRLF & "Value: " & $var[$i][1]) Next EndIf Just a thought.. Please keep your sig. small! Use the help file. Search the forum. Then ask unresolved questions :) Script plugin demo, Simple Trace udf, TrayMenuEx udf, IOChatter demo, freebasic multithreaded dll sample, PostMessage, Aspell, Code profiling Link to comment Share on other sites More sharing options...
SpookMeister Posted April 12, 2006 Author Share Posted April 12, 2006 (edited) I was thinking it was a lot harder than it is... I was under the impression I needed to dynamicaly make a handler for each listviewitem, and I didn't know how to do that... much less how to dynamically handle a case statement for each item. Turns out the handlers are not necessary at all (for my needs): #include <GUIConstants.au3> GUICreate("listview items",220,250, 100,200,-1,$WS_EX_ACCEPTFILES) GUISetBkColor (0x00E0FFFF); will change background color $listview = GUICtrlCreateListView ("col1 |col2|col3 ",10,10,200,150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton ("Value?",75,170,70,20) ; removed $itemX= GUICtrlCreateListViewItem("item2|col22|col23",$listview) GUICtrlCreateListViewItem("item1|col12|col13",$listview) GUICtrlCreateListViewItem("item3|col32|col33",$listview) $input1=GUICtrlCreateInput("",20,200, 150) GUICtrlSetState(-1,$GUI_DROPACCEPTED); to allow drag and dropping GUISetState() #cs GUICtrlSetData($item2,"ITEM1") GUICtrlSetData($item3,"||COL33") GUICtrlDelete($item1) #ce Do $msg = GUIGetMsg () Select Case $msg = $button MsgBox(0,"listview item",GUICtrlRead(GUICtrlRead($listview)),2) Case $msg = $listview MsgBox(0,"listview", "clicked="& GUICtrlGetState($listview),2) EndSelect Until $msg = $GUI_EVENT_CLOSE Works just as well, so long as I'm not trying to manipulate the data in the listview Edited April 12, 2006 by SpookMeister [u]Helpful tips:[/u]If you want better answers to your questions, take the time to reproduce your issue in a small "stand alone" example script whenever possible. Also, make sure you tell us 1) what you tried, 2) what you expected to happen, and 3) what happened instead.[u]Useful links:[/u]BrettF's update to LxP's "How to AutoIt" pdfValuater's Autoit 1-2-3 Download page for the latest versions of Autoit and SciTE[quote]<glyph> For example - if you came in here asking "how do I use a jackhammer" we might ask "why do you need to use a jackhammer"<glyph> If the answer to the latter question is "to knock my grandmother's head off to let out the evil spirits that gave her cancer", then maybe the problem is actually unrelated to jackhammers[/quote] Link to comment Share on other sites More sharing options...
SpookMeister Posted April 12, 2006 Author Share Posted April 12, 2006 This is giving me what I need: #include <GUIConstants.au3> GUICreate("listview items", 220, 250, 100, 200, -1) GUISetBkColor(0x00E0FFFF) ; will change background color $keys = IniReadSection("C:\tinker\sample.ini", "sampledata") $listview = GUICtrlCreateListView("col1 |col2 ", 10, 10, 200, 150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20) For $step = 1 To UBound($keys, 1) - 1 GUICtrlCreateListViewItem($keys[$step][0] & "|" & $keys[$step][1], $listview) Next GUISetState() Do $msg = GUIGetMsg() Select Case $msg = $button $value = StringSplit(GUICtrlRead(GUICtrlRead($listview)), "|") MsgBox(0, "listview item", $value[1], 2) Case $msg = $listview MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2) EndSelect Until $msg = $GUI_EVENT_CLOSE [u]Helpful tips:[/u]If you want better answers to your questions, take the time to reproduce your issue in a small "stand alone" example script whenever possible. Also, make sure you tell us 1) what you tried, 2) what you expected to happen, and 3) what happened instead.[u]Useful links:[/u]BrettF's update to LxP's "How to AutoIt" pdfValuater's Autoit 1-2-3 Download page for the latest versions of Autoit and SciTE[quote]<glyph> For example - if you came in here asking "how do I use a jackhammer" we might ask "why do you need to use a jackhammer"<glyph> If the answer to the latter question is "to knock my grandmother's head off to let out the evil spirits that gave her cancer", then maybe the problem is actually unrelated to jackhammers[/quote] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now