Jump to content

Recommended Posts

Hey guys

Quick question:

In this GUI the listview is created from items in test.txt

I would like my "Get Info" button to show the actual text of the item that is selected. So far I have been able to make it show the number of the item.

What is the last missing puzzle here?
 

#include <GUIConstantsEx.au3>
#include <GUIListViewEx.au3>


Global $MainGUI_ManageItemList
Global $File = "test.txt"
Global $FileToArray = FileReadToArray("test.txt")



Call ("MainGUI_ManageItemList")



Func MainGUI_ManageItemList()

    Local $Button1

    $MainGUI_ManageItemList = GUICreate("Manage Item List", 800, 400, -1, -1)

    $cLV = GUICtrlCreateListView("[items]", 10, 10, 400, 775, $LVS_NOCOLUMNHEADER)
GUICtrlSetFont(-1, 12, 800, 0, "@Arial Unicode MS")
_GUICtrlListView_SetColumnWidth($cLV, 0, 378)

$Button1 = GUICtrlCreateButton("Button 1", 425, 10, 80, 30)
$RemoveItem = GUICtrlCreateButton("Remove Item", 425, 50, 80, 30)
$GetInfo = GUICtrlCreateButton("GetInfo", 425, 120, 80, 30)


GUISetState(@SW_SHOW, $MainGUI_ManageItemList)



; Intialise ListView
Global $iLV_Index = _GUIListViewEx_Init($cLV)
; Insert lines
_GUIListViewEx_Insert($FileToArray, True)
; Register required messages
_GUIListViewEx_MsgRegister(True, False, False, False)


    While 1
        Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE

                ExitLoop

            Case $Button1
            MsgBox(0,"","Button 1 is pressed")


         Case $RemoveItem
            _GUIListViewEx_Delete()

         Case $GetInfo
         $iIndex = _GUICtrlListView_GetSelectedIndices($cLV)
         msgbox (0, "Selected item", $iIndex)

        EndSwitch
    WEnd
EndFunc   ;==>Main

 

Link to post
Share on other sites

Bill ! My new best friend :)

If I define the item number like this: _GUICtrlListView_GetItemText($cLV, 1)  Then it shows the text of item 1 correct.

And since _GUICtrlListView_GetSelectedIndices gets the item number of the selected item, I thought that I could do like this, but it doesn't work.
The 2nd msgbox is just blank.

 

Case $GetInfo
$iIndex = _GUICtrlListView_GetSelectedIndices($cLV)

$iIndexText = _GUICtrlListView_GetItemText($cLV, $iIndex)


msgbox (0, "Selected item NUMBER", $iIndex)
msgbox (0, "Selected item TEXT", $iIndexText)

 

Edited by david1337
Link to post
Share on other sites
31 minutes ago, david1337 said:

Bill ! My new best friend :)

 

o:)

Try the Array Based Parameter:

Case $GetInfo
         $iIndex = _GUICtrlListView_GetSelectedIndices($cLV, True)
        $iIndexText = _GUICtrlListView_GetItemText($cLV, $iIndex[1])

 

Link to post
Share on other sites

Omg I can't believe this fix I just made up :D

Case $GetInfo
         $iIndex = _GUICtrlListView_GetSelectedIndices($cLV)
         $iIndexNumber = $iIndex -""
         $iIndexText = _GUICtrlListView_GetItemText($cLV, $iIndexNumber)


         msgbox (0, "Selected item NUMBER", $iIndex)
         msgbox (0, "Selected item TEXT", $iIndexText)

 

Link to post
Share on other sites
39 minutes ago, david1337 said:

Oh, I didn't see your fix - that works great too, and somehow seems prettier :D

Well yours works for now but when you start adding code and intricacies it may cause problems down the road.

Link to post
Share on other sites

For instance if you were using the Default Version of _GUICtrlListView_Create you could call your case with the following:

$LVS_EX_ONECLICKACTIVATE - The control sends an $LVN_ITEMACTIVATE messages when the user clicks an item

 

Melbas probably has something similar better ;-)

Link to post
Share on other sites

Oh god scripting can be frustrating:

When NO item is selected and the "Get Info" button is clicked, the script crashes with: Array variable has incorrect number of subscripts or subscript dimension range exceeded

I guess that array bug is still haunting here huh? :)

Link to post
Share on other sites
  • Moderators

david1337,

Someone called?

This seems to work nicely:

Case $GetInfo
    $aIndex = _GUICtrlListView_GetSelectedIndices($cLV, True)
    If IsArray($aIndex) And $aIndex[0] <> 0 Then
        MsgBox(0, "Selected item", _GUICtrlListView_GetItemText( $cLV, $aIndex[1]))
    EndIf

And as you are checking that there is at least one item selected, you do not get a crash when one is not.

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 post
Share on other sites
  • Moderators

david1337,

Nice thought - but as has just been proved, I normally turn up fairly quickly in any event!

M23

Edited by Melba23
Typo

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 post
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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By AutoBert
      I made a iconLVw.au3showing the the Icon for DLL's.
      Each LV-Item has 8 SubItems and only the SubItems should have a Icon. The Item himself should only be used for the checking State. This is used to save the selected Items to Disk for future use. But in my script each Item shows the same (first Index in ImageList) Icon, At the moment i use
      _GUICtrlListView_SetColumnWidth($listview, 0, 20) Is their a better way?
       
      mfg (auto)Bert
    • By Skysnake
      I thought I remembered this from somewhere, then I searched, but cannot find which I am looking for...
      How to display additional, hidden ListViewItem text in a popup?
      I thought I saw a Style element that does that, but I cannot find it
      Just point me in the right direction please?
    • By PINTO1927
      Hello guys,
      I'm working with a simple script, complementing a GUICtrlCreateListView which has 5 columns. I would order the first column so that the numbers are decreasing.
      #include <GuiListView.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <StructureConstants.au3> Opt('MustDeclareVars', 1) Global $search_LV, $B_DESCENDING GUICreate("ListView Sort by Column Click", 400, 300) $search_LV = GUICtrlCreateListView("String|Number|String", 2, 2, 394, 268) GUICtrlSendMsg($search_LV, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) GUICtrlSendMsg($search_LV, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) GUICtrlCreateListViewItem("line4|5|1A", $search_LV) GUICtrlCreateListViewItem("line5|4.50 |1B", $search_LV) GUICtrlCreateListViewItem("line10|4.0 |2C", $search_LV) GUICtrlCreateListViewItem("line3|23|01", $search_LV) GUICtrlCreateListViewItem("line2|0.34560 |09", $search_LV) GUICtrlCreateListViewItem("line1|1.0 |7A", $search_LV) GUICtrlCreateListViewItem("line1|0.1 |8C", $search_LV) GUICtrlCreateListViewItem("line1|97|5B", $search_LV) GUICtrlCreateListViewItem("line1|910|9B", $search_LV) GUICtrlCreateListViewItem("line1|99|11", $search_LV) GUICtrlCreateListViewItem("line1|990.99|06", $search_LV) _GUICtrlListView_SetColumnWidth($search_LV, 0, 75) _GUICtrlListView_SetColumnWidth($search_LV, 1, 75) _GUICtrlListView_SetColumnWidth($search_LV, 2, 75) GUISetState() GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;~ _GUICtrlListView_RegisterSortCallBack($search_LV, False) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $search_LV ; Kick off the sort callback ;~ _GUICtrlListView_SortItems($search_LV, GUICtrlGetState($search_LV)) ;~ _GUICtrlListView_UnRegisterSortCallBack($search_LV) EndSwitch WEnd Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo $hWndListView = $search_LV ;~ If Not IsHWnd($search_LV) Then $hWndListView = GUICtrlGetHandle($search_LV) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom ;~ Case $search_LV Case GUICtrlGetHandle($search_LV) Switch $iCode Case $LVN_COLUMNCLICK ; A column was clicked ConsoleWrite("Header geklickt" & @CRLF) Local $tInfo = DllStructCreate($tagNMLISTVIEW, $iLparam) _GUICtrlListView_UnRegisterSortCallBack($search_LV) Local $ColumnSorted = DllStructGetData($tInfo, 'SubItem') If $ColumnSorted = 1 Then ConsoleWrite('Numeric: ' & _GUICtrlListView_RegisterSortCallBack($search_LV, True) & @CRLF) Else ConsoleWrite('Literal: ' & _GUICtrlListView_RegisterSortCallBack($search_LV, False) & @CRLF) EndIf _GUICtrlListView_SortItems($search_LV, DllStructGetData($tInfo, 'SubItem')) EndSwitch EndSwitch EndFunc ;==>WM_NOTIFY Ordering the "String" column, you notice that the line "line10" is not ordered last. And 'possible to order the "String" column in descending order?
      thank you very much
    • By PINTO1927
      Hi Guys,
      I'm working on this project:
      $Import = GUICtrlCreateButton("Import", 15, 175, 90, 40, $WS_GROUP) $List = GUICtrlCreateListView("Name|Address|E-mail", 15, 220, 400, 363, $LVS_SORTDESCENDING) $Item1 = GUICtrlCreateListViewItem("test|test|test", $List) GUISetState(@SW_SHOW, $GUI) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Exit Exit Case $Import $Table_Import = FileOpenDialog("Import list '*.txt'", @DesktopDir & "\", "Text (*.txt)") If @error Then ContinueLoop GUICtrlSetData($Item1, $Table_Import) In the text file the fields are delimited with "|" and the values are not in the same row but one below the other.
      However in the txt file the sum of the values may change.
      Can you help me?
      Thank's
    • By PINTO1927
      Hello guys,
      I built a gui where a GUICtrlCreateListView with two columns is present.
      Through an "Import" button I would be able to import the contents of an .xls or .txt.
      Can you help me?
      Thank's
×
×
  • Create New...