Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание кнопок в GUICtrlCreateTreeViewitem

Ответить
Настройки темы
[решено] Создание кнопок в GUICtrlCreateTreeViewitem

Аватара для ZeroCrash

Пользователь


Сообщения: 62
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Вот код из примера справки:

PHP код: Выделить весь код

#include <GUIConstants.au3>


Global Const $TV_FIRST      0x1100 
Global Const $TVM_EXPAND    $TV_FIRST 2
Global Const $TVE_TOGGLE    0x0003


GUICreate
("My GUI with treeview"350215)

$treeview       GUICtrlCreateTreeView(66100150)
$generalitem    GUICtrlCreateTreeViewitem("General"$treeview)
GUICtrlSetColor(-10x0000C0)
$displayitem    GUICtrlCreateTreeViewitem("Display"$treeview)
GUICtrlSetColor(-10x0000C0)
$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."1907010060)
GUICtrlSetState(-1$GUI_HIDE)  ; Hides the "aboutlabel"-text during initialization
$compinfo       
GUICtrlCreateLabel("Name:" & @TAB & @ComputerName & @LF "OS:" & @TAB & @OSVersion & @LF "SP:" & @TAB & @OSServicePack1203020080)
GUICtrlSetState(-1$GUI_HIDE)  ; Hides the "compinfo"-text during initialization

GUICtrlCreateLabel
(""01703502)
$togglebutton   GUICtrlCreateButton("&Toggle"351857020)
$infobutton     GUICtrlCreateButton("&Info"1051857020)
$statebutton    GUICtrlCreateButton("Col./Exp."1751857020)
$cancelbutton   GUICtrlCreateButton("&Cancel"2451857020)

GUICtrlSetState($generalitemBitOr($GUI_EXPAND,$GUI_DEFBUTTON))    ; Expand the "General"-item and paint in bold
GUICtrlSetState
($displayitemBitOr($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_DEFBUTTONThen
                GUICtrlSetState
($generalitem0)
                
GUICtrlSetState($displayitem0)
            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
                
$advmsg GUICtrlRead($item1) ; Get advanced infos about the treeview item
                
If ($advmsg[0] == 0Then
                    MsgBox
(16"Error""Error while retrieving infos about item")
                Else
                    
MsgBox(64"TreeView Demo""Current item selected is: " $advmsg[0])  ; $advmsg[0contains the text and $advmsg[1the 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
()
Exit

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 

Как сделать чтобы при нажатии на подпункт "About" отображались мои кнопки? В общем как вставить туда кнопки?

-------
Я НЕвкотакте!


Отправлено: 01:16, 02-07-2009

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 996

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
;

$hGUI = GUICreate("My GUI with TreeView", 350, 215)

$TreeView = GUICtrlCreateTreeView(6, 6, 110, 150, -1, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE)

#Region General TVItem
$General_TVItem = GUICtrlCreateTreeViewItem("General", $TreeView)
GUICtrlSetColor(-1, 0x0000C0)

$TVDemo_Label = GUICtrlCreateLabel("TreeView Demo", 190, 90, 100, 20)

$iGeneral_Last_Item = GUICtrlCreateDummy()
#EndRegion General TVItem
;

#Region About TVItem
$About_TVItem = GUICtrlCreateTreeViewItem("About", $General_TVItem)

$About_Label = 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

$Some_Button = GUICtrlCreateButton("My Button", 190, 135, 70, 20)
GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "My Button"-button during initialization

$iAbout_Last_Item = GUICtrlCreateDummy()
#EndRegion About TVItem
;

#Region Computer TVItem
$Computer_TVItem = GUICtrlCreateTreeViewItem("Computer", $General_TVItem)

$ComputerInfo_Label = GUICtrlCreateLabel( _
    StringFormat("Name:\t%sOS:\n\t%s\nSP:\t%s", @ComputerName, @OSVersion, @OSServicePack), 120, 30, 200, 80)
GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "compinfo"-text during initialization

$iComputer_Last_Item = GUICtrlCreateDummy()
#EndRegion Computer TVItem
;

#Region User TVItem
$User_TVItem = GUICtrlCreateTreeViewItem("User", $General_TVItem)

$UserInfo_Label = GUICtrlCreateLabel("User Name: " & @CRLF & @TAB & @TAB & @UserName, 120, 30, 200, 80)
GUICtrlSetState(-1, $GUI_HIDE) ; Hides the "UserInfo"-text during initialization

$iUser_Last_Item = GUICtrlCreateDummy()
#EndRegion User TVItem
;

#Region Display TVItem
$Display_TVItem = GUICtrlCreateTreeViewItem("Display", $TreeView)
GUICtrlSetColor(-1, 0x0000C0)

$iDisplay_Last_Item = GUICtrlCreateDummy()
#EndRegion Display TVItem
;

#Region Resolution TVItem
$Resolution_TVItem = GUICtrlCreateTreeViewItem("Resolution", $Display_TVItem)

$iResolution_Last_Item = GUICtrlCreateDummy()
#EndRegion Resolution TVItem
;

#Region Other TVItem
$Other_TVItem = GUICtrlCreateTreeViewItem("Other", $Display_TVItem)

$iOther_Last_Item = GUICtrlCreateDummy()
#EndRegion Other TVItem
;

;Last ItemID - to hide all controls when showing other (current)
$iLast_TVItemsID = GUICtrlCreateDummy()

GUICtrlCreateLabel("", 0, 180, 350, 2, $SS_SUNKEN)

$Toggle_Button = GUICtrlCreateButton("&Toggle", 35, 185, 70, 20)
$Info_Button = GUICtrlCreateButton("&Info", 105, 185, 70, 20)
$ColExp_Button = GUICtrlCreateButton("Col./Exp.", 175, 185, 70, 20)
$Cancel_Button = GUICtrlCreateButton("&Cancel", 245, 185, 70, 20)

GUICtrlSetState($General_TVItem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "General"-item and paint in bold
GUICtrlSetState($Display_TVItem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Expand the "Display"-item and paint in bold

GUISetState()

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $Cancel_Button, $GUI_EVENT_CLOSE
            Exit
        Case $Toggle_Button ; Toggle the bold painting
            If BitAND(GUICtrlRead($General_TVItem), $GUI_DEFBUTTON) Then
                GUICtrlSetState($General_TVItem, 0)
                GUICtrlSetState($Display_TVItem, 0)
            Else
                GUICtrlSetState($General_TVItem, $GUI_DEFBUTTON)
                GUICtrlSetState($Display_TVItem, $GUI_DEFBUTTON)
            EndIf
        Case $Info_Button
            $iItem_CtrlID = GUICtrlRead($TreeView) ; Get the controlID of the current selected treeview item

            If $iItem_CtrlID = 0 Then
                MsgBox(64, "TreeView Demo", "No item currently selected.", 0, $hGUI)
            Else
                $sItem_Msg = GUICtrlRead($iItem_CtrlID, 1) ; Get advanced infos about the treeview item

                If $sItem_Msg == "" Then
                    MsgBox(16, "Error", "Error while retrieving infos about item.", 0, $hGUI)
                Else
                    MsgBox(64, "TreeView Demo", "Current item selected is: " & $sItem_Msg, 0, $hGUI)
                EndIf
            EndIf
        Case $ColExp_Button
            $iItem_CtrlID = GUICtrlRead($TreeView)

            If $iItem_CtrlID > 0 Then
                $hItem = GUICtrlGetHandle($iItem_CtrlID)
                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 $General_TVItem, $About_TVItem, $Computer_TVItem, $User_TVItem, $Display_TVItem, $Resolution_TVItem, $Other_TVItem
            $iEnd_ItemID = 0

            Switch $nMsg
                Case $General_TVItem
                    $iEnd_ItemID = $iGeneral_Last_Item
                Case $About_TVItem
                    $iEnd_ItemID = $iAbout_Last_Item
                Case $Computer_TVItem
                    $iEnd_ItemID = $iComputer_Last_Item
                Case $User_TVItem
                    $iEnd_ItemID = $iUser_Last_Item
                Case $Display_TVItem
                    $iEnd_ItemID = $iDisplay_Last_Item
                Case $Resolution_TVItem
                    $iEnd_ItemID = $iResolution_Last_Item
                Case $Other_TVItem
                    $iEnd_ItemID = $iOther_Last_Item
            EndSwitch

            ;This list is the control IDs that should be ignored when we set items state
            $sExclude_IDs = $General_TVItem & "|" & $Display_TVItem

            _GUICtrlTreeView_ToggleItemsState($General_TVItem, $iLast_TVItemsID, $nMsg+1, $iEnd_ItemID, $sExclude_IDs)
    EndSwitch
WEnd

Func _GUICtrlTreeView_ToggleItemsState($iHideStartID, $iHideEndID, $iShowStartID, $iShowEndID, $sExclude_IDs="")
    If $sExclude_IDs <> "" Then $sExclude_IDs = "|" & $sExclude_IDs & "|"

    For $i = $iHideStartID To $iHideEndID
        If $sExclude_IDs = "" Or Not StringInStr($sExclude_IDs, "|" & $i & "|") Then GUICtrlSetState($i, $GUI_HIDE)
    Next

    For $i = $iShowStartID To $iShowEndID
        If $sExclude_IDs = "" Or Not StringInStr($sExclude_IDs, "|" & $i & "|") Then GUICtrlSetState($i, $GUI_SHOW)
    Next
EndFunc
Хотя этот пример немного сложны для понимания и для использования, нужно придумать более лояльный метод...

Переделал полностью пример, теперь должно быть яснее - Для каждого TreeViewItem'а выделен блок (через #Region), в границах этого блока, !!!до «$i*_Last_Item = GUICtrlCreateDummy()», можно помещать новые элементы, они будут попадать под процесс отображения/скрытия элементов.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Последний раз редактировалось Creat0R, 02-07-2009 в 02:55. Причина: Изменил пример

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:52, 02-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ZeroCrash

Пользователь


Сообщения: 62
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подчерпнул полезную информацию из твоего поста, но мне нужно было добавить $okbutton = GUICtrlCreateButton, но со структурой кода я разобрался и всё сделал.

Если кому понадобится, то функции для кнопок добавляются здесь:
Код: Выделить весь код
While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $Cancel_Button, $GUI_EVENT_CLOSE
            Exit
        Case $Toggle_Button ; Toggle the bold painting
            If BitAND(GUICtrlRead($General_TVItem), $GUI_DEFBUTTON) Then
                GUICtrlSetState($General_TVItem, 0)
                GUICtrlSetState($Display_TVItem, 0)
            Else
                GUICtrlSetState($General_TVItem, $GUI_DEFBUTTON)
                GUICtrlSetState($Display_TVItem, $GUI_DEFBUTTON)
            EndIf
        Case $okbutton; это уже моя кнопка
            If Random() < 0.5 Then
Run(@ComSpec & " /c Start M_1.bat")
Else
Run(@ComSpec & " /c Start Z_2.bat")
Endif 
    EndSwitch
WEnd

-------
Я НЕвкотакте!


Отправлено: 09:08, 02-07-2009 | #3


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 996

Профиль | Сайт | Отправить PM | Цитировать


Цитата ZeroCrash:
функции для кнопок добавляются здесь: »
Здесь добавляется обработка событии кнопок, а не сами кнопки. В вопросе в первом посте было явно указано:

Цитата ZeroCrash:
Как сделать чтобы при нажатии на подпункт "About" отображались мои кнопки? »
P.S
Не тратье чужое время, более ясно излагайте свою задачу в самом начале.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 16:18, 02-07-2009 | #4


Аватара для ZeroCrash

Пользователь


Сообщения: 62
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Цитата ZeroCrash:
функции для кнопок добавляются здесь: »
Здесь добавляется обработка событии кнопок, а не сами кнопки. »
Ну это я и имел в виду

Цитата Creat0R:
В вопросе в первом посте было явно указано:
Цитата ZeroCrash:
Как сделать чтобы при нажатии на подпункт "About" отображались мои кнопки? »
Не спорю, и претензий на этот счёт никаких не предъявляю. Мне нужно было лишь узнать и остальное додумать сам. Я всё-таки хочу научиться

-------
Я НЕвкотакте!


Отправлено: 16:54, 02-07-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание кнопок в GUICtrlCreateTreeViewitem

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Установка драйверов (нажатие кнопок) SANIOK_AV AutoIt 3 05-09-2010 14:13
Delphi - Создание массива кнопок VovanZ Программирование и базы данных 3 24-12-2009 22:49
[решено] Блокировка кнопок после нажатия в GUI ZeroCrash AutoIt 7 13-07-2009 08:24
[решено] Расположения кнопок Панели Инструментов Freezet Автоматическая установка Windows 2000/XP/2003 3 04-07-2008 19:38
Нужна прога для создание кнопок меню сайта Denis Shutka Вебмастеру 4 22-01-2005 01:30




 
Переход