Jump to content

Click event procedure without using a button


mcgill
 Share

Recommended Posts

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).

Link to comment
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.

 

Link to comment
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

Link to comment
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.

 

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...