Sign in to follow this  
Followers 0
mcgill

Click event procedure without using a button

5 posts in this topic

Is there a way I can get a value in a listview by clicking on the listview item. A few examples use button events to pull the items from the listview. What I would like it to do is click on a field in the listview and it populate into seperate labels(columns from the listview).

Share this post


Link to post
Share on other sites



; Events - ListView
#include <GuiConstants.au3>;Inclusion file for the GUI interface controls
#include <GuiListView.au3>

#region  Global variables
Global $ListView
Global Const $WM_NOTIFY = 0x004E
Global Const $DebugIt = 1

;ListView Events
Global Const $NM_FIRST = 0
Global Const $NM_CLICK = ($NM_FIRST - 2)
Global Const $NM_DBLCLK = ($NM_FIRST - 3)
#endregion End Global variables

Opt("WinTitleMatchMode", 2)

$main_GUI = GUICreate("GuiRegisterMsg Test", 225, 400, 300, 10, BitOR($WS_THICKFRAME, $WS_SIZEBOX))

$ListView = GUICtrlCreateListView("Entry Name|Category", 5, 75, 195, 280, BitOR($LVS_SORTASCENDING, $LVS_SINGLESEL))
_GUICtrlListViewSetColumnWidth ($ListView, 0, 100)
_GUICtrlListViewSetColumnWidth ($ListView, 1, 100)
GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlCreateListViewItem("Name 1|Category 1", $ListView)
GUICtrlCreateListViewItem("Name 2|Category 2", $ListView)
GUISetState()

;Register WM_NOTIFY  events
GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

While 1
   
   $msg = GUIGetMsg()
   
   Switch $msg
      
    ;-----------------------------------------------------------------------------------------
    ;This case statement exits and updates code if needed
      Case $GUI_EVENT_CLOSE
         Exit
         
         
       ;-----------------------------------------------------------------------------------------
       ;put all the misc. stuff here
        Case Else
            ;;;
   EndSwitch
WEnd

Func ListView_Click()
    ;----------------------------------------------------------------------------------------------
    If $DebugIt Then    _DebugPrint("$NM_CLICK")
    ;----------------------------------------------------------------------------------------------
    MsgBox(0,"Clicked", _GUICtrlListViewGetItemText ($ListView, _GUICtrlListViewGetSelectedIndices($ListView)))
EndFunc   ;==>ListView_Click

Func ListView_DoubleClick()
    ;----------------------------------------------------------------------------------------------
    If $DebugIt Then    _DebugPrint ("$NM_DBLCLK")
    ;----------------------------------------------------------------------------------------------
EndFunc   ;==>ListView_DoubleClick

;
; WM_NOTIFY event handler
Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam) ;NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $ListView
        Select
            Case $event = $NM_CLICK
                ListView_Click ()
            Case $event = $NM_DBLCLK
                ListView_DoubleClick ()
            EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
EndFunc   ;==>WM_Notify_Events

Func _DebugPrint($s_text)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+===========================================================" & @LF & _
            "-->" & $s_text & @LF & _
            "+===========================================================" & @LF)
EndFunc   ;==>_DebugPrint


SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

WOW, that is exactly what I am looking for, thanks again gafrost. You have helped me out once again, much appreciated.

Share this post


Link to post
Share on other sites

I am running into a problem with listview/tabs when using the click event function. If I use the $Listview with the click event it works, but when I change the name to be $listview1 I get a error parse error. How come?

#include <GuiConstants.au3>;Inclusion file for the GUI interface controls

#include <GuiListView.au3>

#include <Process.au3>

#include <GuiCombo.au3>

#include <GuiList.au3>

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;Global variables used in Functions to open Text Files - updates Listviews in the SDT Tool

Global $listview, $listview1, $listview2, $listview3

Global $a, $line, $file

$a = "0"

$line = ""

$file = ""

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;Global variable Paths for Text Files - points data to the Listviews in the SDT Tool

Global $pathBlue = "\\hosvr7\Docs\Service Desk\SDT\Branch Coding\Branch Coding Blue.txt"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;Global variable used for listviews with event handler -Listviews in the SDT Tool

;#region Global variables

Global $ListView

Global Const $WM_NOTIFY = 0x004E

Global Const $DebugIt = 1

;ListView Events

Global Const $NM_FIRST = 0

Global Const $NM_CLICK = ($NM_FIRST - 2)

Global Const $NM_DBLCLK = ($NM_FIRST - 3)

;#endregion End Global variables

Opt("WinTitleMatchMode", 2)

$main_GUI = GUICreate("GuiRegisterMsg Test", 500, 400, 300, 10, BitOR($WS_THICKFRAME, $WS_SIZEBOX))

$ListView = GUICtrlCreateListView("Entry Name|Category", 5, 75, 195, 280, BitOR($LVS_SORTASCENDING, $LVS_SINGLESEL))

_GUICtrlListViewSetColumnWidth ($ListView, 0, 100)

_GUICtrlListViewSetColumnWidth ($ListView, 1, 100)

GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)

GUICtrlCreateListViewItem("Name 1|Category 1", $Listview)

GUICtrlCreateListViewItem("Name 2|Category 2", $Listview)

$tab=GUICtrlCreateTab (210,5, 270,310)

$tab0=GUICtrlCreateTabitem ("Branch Coding")

$listview1 = GUICtrlCreateListView("Branch |ID Series |Branch ID ", 215, 35, 240, 250);,$LVS_SORTDESCENDING)

GUISetBkColor(0x00E0FFFF) ; will change background color

$buttonBlue = GUICtrlCreateButton("Blue Payroll", 215, 285, 80, 25)

$buttonGreen = GUICtrlCreateButton("Green Payroll", 295, 285, 80, 25)

$buttonRed = GUICtrlCreateButton("Red Payroll", 375, 285, 80, 25)

BranchCodingBlue()

GUISetState()

;Register WM_NOTIFY events

GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

While 1

$msg = GUIGetMsg()

Select

;-----------------------------------------------------------------------------------------

;This case statement exits and updates code if needed

Case $msg = $GUI_EVENT_CLOSE

Exit

;-----------------------------------------------------------------------------------------

;put all the misc. stuff here

Case Else

;;;

Case $msg = $buttonBlue

_GUICtrlListViewDeleteAllItems($listview1)

BranchCodingBlue()

EndSelect

WEnd

Func ListView_Click()

;----------------------------------------------------------------------------------------------

If $DebugIt Then _DebugPrint("$NM_CLICK")

;----------------------------------------------------------------------------------------------

MsgBox(0,"Clicked", _GUICtrlListViewGetItemText ($listview1, _GUICtrlListViewGetSelectedIndices($listview1))

EndFunc ;==>ListView_Click

Func ListView_DoubleClick()

;----------------------------------------------------------------------------------------------

If $DebugIt Then _DebugPrint ("$NM_DBLCLK")

;----------------------------------------------------------------------------------------------

EndFunc ;==>ListView_DoubleClick

;

; WM_NOTIFY event handler

Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)

#forceref $hWndGUI, $MsgID, $wParam

Local $tagNMHDR, $event, $hwndFrom, $code

$tagNMHDR = DllStructCreate("int;int;int", $lParam) ;NMHDR (hwndFrom, idFrom, code)

If @error Then Return

$event = DllStructGetData($tagNMHDR, 3)

Select

Case $wParam = $listview1

Select

Case $event = $NM_CLICK

ListView_Click ()

Case $event = $NM_DBLCLK

ListView_DoubleClick ()

EndSelect

EndSelect

$tagNMHDR = 0

$event = 0

$lParam = 0

EndFunc ;==>WM_Notify_Events

Func _DebugPrint($s_text)

ConsoleWrite( _

"!===========================================================" & @LF & _

"+===========================================================" & @LF & _

"-->" & $s_text & @LF & _

"+===========================================================" & @LF)

EndFunc ;==>_DebugPrint

Func BranchCodingBlue()

$file = FileOpen($pathBlue, 0)

; Check if file opened for reading OK

If $file = -1 Then

MsgBox(0, "Error", "Unable to open file.")

Exit

EndIf

; Read in lines of text until the EOF is reached

While 1

$line = FileReadLine($file)

If @error = -1 Then ExitLoop

$a = StringFormat("%s", $line)

GUICtrlCreateListViewItem($a, $listview1)

WEnd

FileClose($file)

$a = "0"

EndFunc ;==>BranchCodingBlue

Share this post


Link to post
Share on other sites

Suggest getting SciTE for and Editor (see my signature)

Also please use [ code ] before the code and [ /code ] after the code with-out the spaces

Untested

#include <GuiConstants.au3>;Inclusion file for the GUI interface controls
#include <GuiListView.au3>
#include <Process.au3>
#include <GuiCombo.au3>
#include <GuiList.au3>

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;Global variables used in Functions to open Text Files - updates Listviews in the SDT Tool

Global $listview, $listview1, $listview2, $listview3
Global $a, $line, $file
$a = "0"
$line = ""
$file = ""

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;Global variable Paths for Text Files - points data to the Listviews in the SDT Tool

Global $pathBlue = "\\hosvr7\Docs\Service Desk\SDT\Branch Coding\Branch Coding Blue.txt"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;Global variable used for listviews with event handler -Listviews in the SDT Tool

;#region Global variables
Global $listview
Global Const $WM_NOTIFY = 0x004E
Global Const $DebugIt = 1

;ListView Events
Global Const $NM_FIRST = 0
Global Const $NM_CLICK = ($NM_FIRST - 2)
Global Const $NM_DBLCLK = ($NM_FIRST - 3)
;#endregion End Global variables

Opt("WinTitleMatchMode", 2)

$main_GUI = GUICreate("GuiRegisterMsg Test", 500, 400, 300, 10, BitOR($WS_THICKFRAME, $WS_SIZEBOX))

$listview = GUICtrlCreateListView("Entry Name|Category", 5, 75, 195, 280, BitOR($LVS_SORTASCENDING, $LVS_SINGLESEL))
_GUICtrlListViewSetColumnWidth($listview, 0, 100)
_GUICtrlListViewSetColumnWidth($listview, 1, 100)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlCreateListViewItem("Name 1|Category 1", $listview)
GUICtrlCreateListViewItem("Name 2|Category 2", $listview)

$tab = GUICtrlCreateTab(210, 5, 270, 310)
$tab0 = GUICtrlCreateTabItem("Branch Coding")
$listview1 = GUICtrlCreateListView("Branch |ID Series |Branch ID ", 215, 35, 240, 250);,$LVS_SORTDESCENDING)

GUISetBkColor(0x00E0FFFF) ; will change background color

$buttonBlue = GUICtrlCreateButton("Blue Payroll", 215, 285, 80, 25)
$buttonGreen = GUICtrlCreateButton("Green Payroll", 295, 285, 80, 25)
$buttonRed = GUICtrlCreateButton("Red Payroll", 375, 285, 80, 25)
BranchCodingBlue()

GUISetState()

;Register WM_NOTIFY events
GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

While 1

    $msg = GUIGetMsg()

    Select
        ;-----------------------------------------------------------------------------------------
        ;This case statement exits and updates code if needed
        Case $msg = $GUI_EVENT_CLOSE
            Exit
            ;-----------------------------------------------------------------------------------------
            ;put all the misc. stuff here
        Case $msg = $buttonBlue
            _GUICtrlListViewDeleteAllItems($listview1)
            BranchCodingBlue()
        Case Else
            ;;;
    EndSelect
WEnd

Func ListView_Click()
    ;----------------------------------------------------------------------------------------------
    If $DebugIt Then _DebugPrint("$NM_CLICK")
    ;----------------------------------------------------------------------------------------------
    MsgBox(0, "Clicked", _GUICtrlListViewGetItemText($listview1, _GUICtrlListViewGetSelectedIndices($listview1)))
EndFunc   ;==>ListView_Click

Func ListView_DoubleClick()
    ;----------------------------------------------------------------------------------------------
    If $DebugIt Then _DebugPrint("$NM_DBLCLK")
    ;----------------------------------------------------------------------------------------------
EndFunc   ;==>ListView_DoubleClick

;
; WM_NOTIFY event handler
Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam) ;NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
        Case $wParam = $listview1
            Select
                Case $event = $NM_CLICK
                    ListView_Click()
                Case $event = $NM_DBLCLK
                    ListView_DoubleClick()
            EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
EndFunc   ;==>WM_Notify_Events

Func _DebugPrint($s_text)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+===========================================================" & @LF & _
            "-->" & $s_text & @LF & _
            "+===========================================================" & @LF)
EndFunc   ;==>_DebugPrint

Func BranchCodingBlue()
    $file = FileOpen($pathBlue, 0)
    ; Check if file opened for reading OK
    If $file = -1 Then
        MsgBox(0, "Error", "Unable to open file.")
        Exit
    EndIf
    ; Read in lines of text until the EOF is reached
    While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        $a = StringFormat("%s", $line)
        GUICtrlCreateListViewItem($a, $listview1)
    WEnd
    FileClose($file)
    $a = "0"
EndFunc   ;==>BranchCodingBlue

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


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
Sign in to follow this  
Followers 0