Jump to content

Track ListViewItems in a ListView


TheDcoder
 Share

Recommended Posts

Hello! I want to keep track of all the ListViewItems in a ListView:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 267, 206, 192, 124)
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 8, 8, 250, 150)
$Button1 = GUICtrlCreateButton("Get Extended", 8, 168, 251, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlCreateListViewItem("Foo|Bar", $ListView1) ; Extended: Comman Placeholders
GUICtrlCreateListViewItem("Baz|Qux", $ListView1) ; Extended: Rare Placeholders

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
            
        Case $Button1
            ; ...?

    EndSwitch
WEnd

In the above example situation, I want to get the extended text (commented after each ListViewItem) for the the ListViewItem... If I select Foo & Bar (1st Item) and press "Get Extended" a MsgBox should display "Comman Placeholders"

 

Thanks in Advance, TD :)

 

P.S The items are dynamically created in my program and the extended information is stored in a array

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

  • Moderators

TheDcoder,

The items are dynamically created in my program and the extended information is stored in a array

And what is the link between the two? How do you determine which element of the extended information array relates to the selected ListView item?

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

And what is the link between the two?

Each Item has a path associated...

How do you determine which element of the extended information array relates to the selected ListView item?

That is what I was looking for :P

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

  • Moderators

TheDcoder,

Assuming that you create the extended information at the same time as a ListView row, you can use an array to very easily link the two elements:

#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

Global $aData[2][2] = [["Foo|Bar", "Comman Placeholder"], ["Baz|Qux", "Rare Placeholders"]]

$Form1 = GUICreate("Form1", 267, 206, 192, 124)
$ListView1 = GUICtrlCreateListView("Col 1|Col 2", 8, 8, 250, 150)
$Button1 = GUICtrlCreateButton("Get Extended", 8, 168, 251, 25)
GUISetState(@SW_SHOW)

For $i = 0 To UBound($aData) - 1
    GUICtrlCreateListViewItem($aData[$i][0], $ListView1)
Next

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

        Case $GUI_EVENT_CLOSE
            Exit

        Case $Button1
            $iIndex = _GUICtrlListView_GetSelectedIndices($ListView1)
            If $iIndex <> "" Then
                MsgBox($MB_SYSTEMMODAL, "Extended", $aData[$iIndex][1])
            EndIf



    EndSwitch
WEnd

Just add a new row to the array each time you create a ListView row.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...