|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как узнать изменено ли значение checkbox |
|
[решено] Как узнать изменено ли значение checkbox
|
Пользователь Сообщения: 61 |
Профиль | Отправить PM | Цитировать Как узнать менялось ли значение checkbox у строки из ListView, это не помогает - "If BitAND(GUICtrlRead($iCtrlID), $GUI_CHECKED) Then ..."
|
|
Отправлено: 11:32, 20-10-2009 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Может я не правильно понял
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Dim $sIndex[2] = ["Checkbox1", "Checkbox2"] $nForm = GUICreate("", 196, 92) $Checkbox1 = GUICtrlCreateCheckbox($sIndex[0], 8, 8, 97, 17) $Checkbox2 = GUICtrlCreateCheckbox($sIndex[1], 8, 32, 97, 17) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam) Local $iIDFrom = BitAND($wParam, 0xFFFF) Local $iCode = BitShift($wParam, 16) Dim $aRead[2] = [GUICtrlRead($iIDFrom), GUICtrlRead($iIDFrom, 1)] For $i = 0 To UBound($sIndex) - 1 If $aRead[1] = $sIndex[$i] Then MsgBox(0, Default, "Изменено значение чекбокса - " & $aRead[1]) ExitLoop EndIf Next Return $GUI_RUNDEFMSG EndFunc |
Отправлено: 12:04, 20-10-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
Цитата malev:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <GuiListView.au3> ; $hGUI = GUICreate("ListView Item Сhecked") $hListView = GUICtrlCreateListView("Column 1|Column 2", 10, 10, 380, 360, -1, $LVS_EX_CHECKBOXES + $WS_EX_DLGMODALFRAME) _GUICtrlListView_RegisterSortCallBack($hListView) For $i = 1 To 10 GUICtrlCreateListViewItem("Item " & $i & "|SubItem " & $i, $hListView) Next $Status_Label = GUICtrlCreateLabel("", 10, 385, 380, 15, $SS_SUNKEN) GUISetState() GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func ItemChecked_Proc($iItem, $bState, $iID) GUICtrlSetData($Status_Label, "<" & $iItem & "> is checked = " & $bState & ", CtrlID = " & $iID) EndFunc Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $hListView If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $LVN_COLUMNCLICK ; A column was clicked Local $tInfo = DllStructCreate($tagNMLISTVIEW, $lParam) ; Kick off the sort callback _GUICtrlListView_SortItems($hWndFrom, DllStructGetData($tInfo, "SubItem")) Case $NM_CLICK, $NM_DBLCLK, $NM_RCLICK Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) Local $iIndex = DllStructGetData($tInfo, "Index") If $iIndex <> -1 Then Local $iX = DllStructGetData($tInfo, "X") Local $iPart = 1 If _GUICtrlListView_GetView($hListView) = 1 Then $iPart = 2 ;for large icons view Local $aIconRect = _GUICtrlListView_GetItemRect($hListView, $iIndex, $iPart) If $iX < $aIconRect[0] And $iX >= 5 Then $iOld_Sel_Index = _GUICtrlListView_GetSelectedIndices($hListView) _GUICtrlListView_SetItemSelected($hListView, $iIndex) $iID = GUICtrlRead($iIDFrom) ControlListView($hWnd, "", $iIDFrom, "SelectClear") If $iOld_Sel_Index <> "" Then _GUICtrlListView_SetItemSelected($hListView, Number($iOld_Sel_Index)) ItemChecked_Proc(_GUICtrlListView_GetItemText($hListView, $iIndex), _ (_GUICtrlListView_GetItemChecked($hListView, $iIndex) = 0), $iID) Return 0 EndIf EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc |
||
------- Последний раз редактировалось Creat0R, 21-10-2009 в 07:04. Отправлено: 14:11, 20-10-2009 | #3 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Вот это код, действительно работает, еще бы как узнать ControlID чекнутого элемента, индекс не подойдет так как я сортирую список
|
Отправлено: 16:06, 20-10-2009 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 06:51, 21-10-2009 | #5 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Конечно ID не нужен для сортировки просто мне нужно записать check строки в файл, а при сортировке все индекса меняются кто был первым может стать последним поэтому и идентифицирую запись по ID. Можно конечно еще поле добавить порядковый номер...Считаю тему решенной. Спасибо.
|
Отправлено: 13:40, 21-10-2009 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как поменять значение в оперативной памяти | kronic | AutoIt | 2 | 16-12-2009 17:50 | |
Разное - [решено] Узнать когда было изменено имя рабочей группы | viter_alex | Microsoft Windows 2000/XP | 2 | 07-07-2009 13:02 | |
Delphi - Как отключить все Checkbox'ы на форме? | R.M.L | Программирование и базы данных | 9 | 08-06-2009 00:59 | |
[решено] Как проверить Checkbox, как в Input писать только определенные символы | leprecon | AutoIt | 4 | 21-05-2009 23:02 | |
Как узнать переменную которой передается значение?? | FADE | Вебмастеру | 2 | 30-06-2004 18:45 |
|