|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отловить нажатие по плюсику |
|
[решено] Отловить нажатие по плюсику
|
Старожил Сообщения: 398 |
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте!
Вот пример из справки: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <TreeViewConstants.au3> #include <StaticConstants.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $treeview, $generalitem, $displayitem, $aboutitem, $compitem Local $useritem, $resitem, $otheritem, $startlabel, $aboutlabel, $compinfo Local $togglebutton, $infobutton, $statebutton, $cancelbutton Local $msg, $item, $hItem, $text GUICreate("My GUI with treeview", 350, 215) $treeview = GUICtrlCreateTreeView(6, 6, 100, 150, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) $generalitem = GUICtrlCreateTreeViewItem("General", $treeview) GUICtrlSetColor(-1, 0x0000C0) $displayitem = GUICtrlCreateTreeViewItem("Display", $treeview) GUICtrlSetColor(-1, 0x0000C0) $aboutitem = GUICtrlCreateTreeViewItem("About", $generalitem) $compitem = GUICtrlCreateTreeViewItem("Computer", $generalitem) $useritem = GUICtrlCreateTreeViewItem("User", $generalitem) $resitem = GUICtrlCreateTreeViewItem("Resolution", $displayitem) $otheritem = GUICtrlCreateTreeViewItem("Other", $displayitem) $startlabel = GUICtrlCreateLabel("TreeView Demo", 190, 90, 100, 20) $aboutlabel = GUICtrlCreateLabel("This little scripts demonstates the using of a treeview-control.", 190, 70, 100, 60) GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "aboutlabel"-text during initialization $compinfo = GUICtrlCreateLabel("Name:" & @TAB & @ComputerName & @LF & "OS:" & @TAB & @OSVersion & @LF & "SP:" & @TAB & @OSServicePack, 120, 30, 200, 80) GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "compinfo"-text during initialization GUICtrlCreateLabel("", 0, 170, 350, 2, $SS_SUNKEN) $togglebutton = GUICtrlCreateButton("&Toggle", 35, 185, 70, 20) $infobutton = GUICtrlCreateButton("&Info", 105, 185, 70, 20) $statebutton = GUICtrlCreateButton("Col./Exp.", 175, 185, 70, 20) $cancelbutton = GUICtrlCreateButton("&Cancel", 245, 185, 70, 20) GUICtrlSetState($generalitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "General"-item and paint in bold GUICtrlSetState($displayitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $cancelbutton Or $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $togglebutton ; Toggle the bold painting If BitAND(GUICtrlRead($generalitem), $GUI_DEFBUTTON) Then GUICtrlSetState($generalitem, 0) GUICtrlSetState($displayitem, 0) Else GUICtrlSetState($generalitem, $GUI_DEFBUTTON) GUICtrlSetState($displayitem, $GUI_DEFBUTTON) EndIf Case $msg = $infobutton $item = GUICtrlRead($treeview) ; Get the controlID of the current selected treeview item If $item = 0 Then MsgBox(64, "TreeView Demo", "No item currently selected") Else $text = GUICtrlRead($item, 1) ; Get the text of the treeview item If $text == "" Then MsgBox(16, "Error", "Error while retrieving infos about item") Else MsgBox(64, "TreeView Demo", "Current item selected is: " & $text) ; $advmsg[0] contains the text and $advmsg[1] the state value of the treeview item EndIf EndIf Case $msg = $statebutton $item = GUICtrlRead($treeview) If $item > 0 Then $hItem = GUICtrlGetHandle($item) GUICtrlSendMsg($treeview, $TVM_EXPAND, $TVE_TOGGLE, $hItem) EndIf ; The following items will hide the other labels (1st and 2nd parameter) and then show the 'own' labels (3rd and 4th parameter) Case $msg = $generalitem GUIChangeItems($aboutlabel, $compinfo, $startlabel, $startlabel) Case $msg = $aboutitem GUICtrlSetState($compinfo, $GUI_HIDE) GUIChangeItems($startlabel, $startlabel, $aboutlabel, $aboutlabel) Case $msg = $compitem GUIChangeItems($startlabel, $aboutlabel, $compinfo, $compinfo) EndSelect WEnd GUIDelete() EndFunc ;==>Example Func GUIChangeItems($hidestart, $hideend, $showstart, $showend) Local $idx For $idx = $hidestart To $hideend GUICtrlSetState($idx, $GUI_HIDE) Next For $idx = $showstart To $showend GUICtrlSetState($idx, $GUI_SHOW) Next EndFunc ;==>GUIChangeItems Т.е. мне нужно анпример изначально есть два елемента свёрнутых, пользователь нажимает на плюсик по имени этого элемента из определённого файла считываются разделы и добавляются в этот элемент. |
|
------- Отправлено: 13:24, 26-06-2009 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
Переменная $aboutitem содержит controlID элемента Цитата morgan1991:
|
||
Отправлено: 07:09, 27-06-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать GUICtrlRead ( controlID [, advanced] )
TreeView Control identifier (controlID) of the selected TreeViewItem TreeViewItem State of the TreeViewItem For Treeview items several states can be returned as $GUI_FOCUS, $GUI_EXPAND and $GUI_CHECKED, $GUI_UNCHECKED (only for treeview controls with TVS_CHECKBOXES-style . So use i.e. BitAnd(GUICtrlRead($Item),$GUI_CHECKED) to test if the item is checked. |
------- Отправлено: 10:27, 27-06-2009 | #3 |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Sylver Dragon:
Цитата FlatX007:
Цитата FlatX007:
|
|||
------- Отправлено: 13:07, 27-06-2009 | #4 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Повторяю ещё раз:
GUICtrlRead (controlID) - advanced не нужен. controlID - элемент с плюсиком. Добавьте в код, в цикл обработки GUI: If $msg<> $GUI_EVENT_MOUSEMOVE and $msg<> $GUI_EVENT_PRIMARYDOWN Then MsgBox(4096, "", GUICtrlRead($generalitem)) EndIf |
|
------- Отправлено: 14:30, 27-06-2009 | #5 |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать А если плюсиков много? И я не знаю
Цитата Sylver Dragon:
|
|
------- Отправлено: 23:03, 29-06-2009 | #6 |
Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Знаешь ты controlID
При создании TreeViewItem ты получаешь его ID Плюсик относится к элементу который с ним. Пример: $generalitem GUICtrlRead ($generalitem) возвращает мне 1792 когда выделен и равёрнут. 1536 когда развёрнут, но не выделен. 512 когда не развёрнут и не выделен. 768 когда не развёрнут, но выделен. GUICtrlRead ($treeview) позволяет узнать ID выделенного элемента. Понял фишку. Ты можешь хранить массив состояний элементов с плюсиками. При каком-нибудь событии ты проверяешь, изменилось ли состояние какого-нибудь плюсика и если изменилось как надо. - обновляешь список элментов. |
------- Отправлено: 10:54, 30-06-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Отловить форму в IE | Lodoss | AutoIt | 3 | 26-11-2009 11:12 | |
[решено] Отловить visible text | Frost_Imp | AutoIt | 7 | 25-09-2009 12:55 | |
[решено] Отследить нажатие кнопки | w3d1 | AutoIt | 11 | 03-09-2009 14:24 | |
[решено]Нажатие кнопки-картинки в IE | ikif | AutoIt | 10 | 13-07-2009 22:06 | |
[решено] отловить двойной клик по GuiCtrlCreateList | morgan1991 | AutoIt | 11 | 29-04-2009 01:44 |
|