Что нового

получить значение из таблицы ListView в input

Maxlinus

Новичок
Сообщения
40
Репутация
1
есть таблица отображаемая в ListView , как сделать чтобы при двойном щелчке по нужной строке данные поподали в input.?

нашел _GUICtrlListViewGetItemText, но не работает вываливается ошибка что не понимает эту функцию
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

$Form1 = GUICreate("Form1", 405, 122, 192, 124)
Global $ListView1 = GUICtrlCreateListView("", 8, 8, 250, 102)
_GUICtrlListView_InsertColumn($ListView1, 0, 'Список', 230)
Global $Input1 = GUICtrlCreateInput("", 272, 8, 121, 21)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
For $i = 1 To 10
	GUICtrlCreateListViewItem('Текст - ' & $i, $ListView1)
Next

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

	EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $imsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo,$text
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $iIDFrom
        Case $ListView1
            Switch $iCode
                Case $NM_DBLCLK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    $text= _GUICtrlListView_GetItemText($ListView1, DllStructGetData($tInfo, "Index"))
					GUICtrlSetData($Input1,$text)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Maxlinus [?]
нашел _GUICtrlListViewGetItemText, но не работает вываливается ошибка что не понимает эту функцию
справку нужно читать внимательно, смотреть примеры
 
Автор
M

Maxlinus

Новичок
Сообщения
40
Репутация
1
примеры и не работают с этой функцией
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Пример от joiner работает , только что проверил.
 
Автор
M

Maxlinus

Новичок
Сообщения
40
Репутация
1
угу спасибо


Добавлено:
Сообщение автоматически объединено:

пришлось немного изменить чтобы он читал именно то что нужно и брал значение из файла.(listviewer у меня берет данные из файлы ini)

Код:
Func WM_NOTIFY($hWnd, $imsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo,$text
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $iIDFrom
        Case $ListView
            Switch $iCode
                Case $NM_DBLCLK
                   $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    $text= _GUICtrlListView_GetItemText($ListView, DllStructGetData($tInfo, "Index"))
                  ; ; GUICtrlSetData($Input1,$text)


			  $temp_file = IniRead($File_Location, "Address", $text, "Not Found")

    $temp_split = StringSplit($temp_file, ",")
    For $t = 1 To $temp_split[0] - 1

        $num = $text
    Next
    GUICtrlSetData($Input1, $temp_split[2])

    Return


			EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Верх