Что нового

[Элементы GUI] Выбор элемента в ListView мышкой. вывод и сохранение данных

Notum

Новичок
Добрый день,

Имеется простой GUI, с ListView (состоящим из двух колонок) и InputBox'ами.
Задача: после выбора какого-либо элемента в ListView мышкой - вывести значения колонки 1 в InputBox $iID, а колонки 2 - в InputBox $iDate, отредактировать либо 1 либо второе значение и по нажатию кнопки Save - сохранить изменения.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <String.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

$Form1 = GUICreate("Atlantis - License Manager", 466, 328, 192, 124)
;~ $Button1 = GUICtrlCreateButton("Add", 360, 112, 75, 25)
$iID = GUICtrlCreateInput("", 336, 24, 121, 21)
$iDate = GUICtrlCreateInput("", 336, 64, 121, 21)
$Button2 = GUICtrlCreateButton("Remove", 360, 152, 75, 25)
;~ $bSave = GUICtrlCreateButton("Save", 360, 288, 75, 25)
$lvLicenseList = GUICtrlCreateListView("ID|Expiration", 16, 8, 314, 310)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 220)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 90)
GUISetState(@SW_SHOW)

Local $aItems[100][2]

For $i = 0 To UBound($aItems) - 1
	$aItems[$i][0] = "Item " & $i
	$aItems[$i][1] = "Data " & $i
Next

_GUICtrlListView_AddArray($lvLicenseList, $aItems)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


К сожаления мне удалось выбрать данные из выбранного пункта мыши только по нажатию дополнительной кнопки из GUI.
 

InnI

AutoIT Гуру
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <String.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

$Form1 = GUICreate("Atlantis - License Manager", 466, 328, 192, 124)
;~ $Button1 = GUICtrlCreateButton("Add", 360, 112, 75, 25)
$iID = GUICtrlCreateInput("", 336, 24, 121, 21)
$iDate = GUICtrlCreateInput("", 336, 64, 121, 21)
;~ $Button2 = GUICtrlCreateButton("Remove", 360, 152, 75, 25)
$bSave = GUICtrlCreateButton("Save", 360, 288, 75, 25)
$lvLicenseList = GUICtrlCreateListView("ID|Expiration", 16, 8, 314, 310)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 220)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 90)
GUISetState(@SW_SHOW)

Local $aItems[100]

For $i = 0 To UBound($aItems) - 1
    $aItems[$i] = GUICtrlCreateListViewItem("Item " & $i & "|" & "Data " & $i, $lvLicenseList)
Next

;~ _GUICtrlListView_AddArray($lvLicenseList, $aItems)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aItems[0] To $aItems[UBound($aItems) - 1]
            $aItemText = StringSplit(GUICtrlRead(GUICtrlRead($lvLicenseList)), "|")
            GUICtrlSetData($iID, $aItemText[1])
            GUICtrlSetData($iDate, $aItemText[2])
        Case $bSave
            GUICtrlSetData(GUICtrlRead($lvLicenseList), GUICtrlRead($iID) & "|" & GUICtrlRead($iDate))
    EndSwitch
WEnd
 
Верх