|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] По нажатию кнопки в GUI снизу появляется дополнительный сектор окна |
|
[решено] По нажатию кнопки в GUI снизу появляется дополнительный сектор окна
|
Старожил Сообщения: 186 |
Профиль | Отправить PM | Цитировать Добрый день! Нужно, чтобы по нажатию кнопки снизу появлялась до этого не существовавшая часть окна (ширина равна ширине изначального GUI, высота произвольна).
Как реализовать такую возможность на примере нижеследующего скрипта? #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 550, 146, 192, 124) $Button1 = GUICtrlCreateButton("Опции >>", 440, 112, 105, 25, $WS_GROUP) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Button1 ChangeGUIView() ; тут должен быть код, изменяющий GUI Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func ChangeGUIView() EndFunc P.S. Сори, если объяснение того, что нужно, очень пространное, но я не знаю, как это называется. В каких-то окнах я видел реализацию такой возможности, но напрочь не помню, где именно. Поэтому примеров готовых решений предоставить не могу. |
|
Отправлено: 17:54, 26-10-2009 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать #include <GUIConstantsEx.au3> Global $Guiwidth=550 Global $Guiheight =300 $hGUI = GUICreate("Test", $Guiwidth, $Guiheight) $ResizeGUI_Button = GUICtrlCreateButton("Опции >>", 440, 250, 105, 25) $ResizeGUI_Button2 = GUICtrlCreateButton("Опции <<", 440, 95, 105, 25) GUICtrlSetState($ResizeGUI_Button2,$GUI_HIDE) ;Create test controls $TestControl= GUICtrlCreateButton("Кнопка", 10, 150, 105, 25) GUICtrlSetState($TestControl,$GUI_HIDE) $TestControl2= GUICtrlCreateInput("Инпут", 10, 200, 120, 25) GUICtrlSetState($TestControl2,$GUI_HIDE) $TestControl3= GUICtrlCreateCombo("Комбо", 10, 250, 135, 25) GUICtrlSetState($TestControl3,$GUI_HIDE) WinMove($hGUI, "", Default, Default, $Guiwidth, $Guiheight-150) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $ResizeGUI_Button WinMove($hGUI, "", Default, Default,$Guiwidth, $Guiheight) ControlHide($hGui ,"",$ResizeGUI_Button) ControlShow($hGui ,"",$ResizeGUI_Button2) GUICtrlSetState($TestControl,$GUI_Show) GUICtrlSetState($TestControl2,$GUI_Show) GUICtrlSetState($TestControl3,$GUI_Show) Case $ResizeGUI_Button2 ControlHide($hGui ,"",$ResizeGUI_Button2) GUICtrlSetState($TestControl,$GUI_HIDE) GUICtrlSetState($TestControl2,$GUI_HIDE) GUICtrlSetState($TestControl3,$GUI_HIDE) ControlShow($hGui ,"",$ResizeGUI_Button) WinMove($hGUI, "", Default, Default,$Guiwidth, $Guiheight-150) Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd |
------- Отправлено: 21:51, 26-10-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Во-первых нужно не просто расширить окно, но ещё и поместить в него элементы, а для этого их сперва нужно создать (на этапе создания GUI).
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIImageList.au3> ; Global $hImageList, $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL) Global $iGUI_Height = 150 $Form1 = GUICreate("Form1", 550, $iGUI_Height, 192, 124) $Button1 = GUICtrlCreateButton("Опции >>", 440, 112, 105, 25, $WS_GROUP) _GUICtrlButton_SetImageEx($hImageList, $Button1, @SystemDir & "\rasdlg.dll", 14) #Region Expanded controls GUICtrlCreateButton("Some Button", 20, 240, 80) GUICtrlCreateButton("Other Button", 120, 240, 80) GUICtrlCreateInput("Some Input", 20, 200, 200, 20) Opt("GUIResizeMode", $sOld_Opt_GRM) #EndRegion Expanded controls ; GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Button1 _Toggle_ExpandControls_Proc($Form1, $iGUI_Height, $iGUI_Height+150, $Button1, "Опции >>", "Опции <<") Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _Toggle_ExpandControls_Proc($hWnd,$iInitWndHeight,$iExpndHeight,$iExpndCtrlID,$sExpndText="Expand",$sCntrctText="Contract") Local $iHeight, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics Local Const $SM_CYCAPTION = 4 ;Caption (Title) heigth Local Const $SM_CXFIXEDFRAME = 7 ;Window border size $aSysCaptMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CYCAPTION) $aSysBordMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CXFIXEDFRAME) $aGuiPos = WinGetPos($hWnd) If $aGuiPos[3] > $iExpndHeight + $aSysCaptMetrics[0] Then _GUICtrlButton_SetImageEx($hImageList, $iExpndCtrlID, @SystemDir & "\rasdlg.dll", 14) $iHeight = $iInitWndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2) $sButtonText = $sExpndText Else _GUICtrlButton_SetImageEx($hImageList, $iExpndCtrlID, @SystemDir & "\rasdlg.dll", 16) $iHeight = $iExpndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2) $sButtonText = $sCntrctText EndIf GUICtrlSetData($iExpndCtrlID, $sButtonText) WinMove($hWnd, "", $aGuiPos[0], $aGuiPos[1], $aGuiPos[2], $iHeight) EndFunc Func _GUICtrlButton_SetImageEx(ByRef $hImageList, $nCtrl, $sIconFile, $nIconID=0, $nAlign=-1) If $hImageList Then _GUIImageList_Destroy($hImageList) $hImageList = _GUIImageList_Create(16, 16, 5, 1) _GUIImageList_AddIcon($hImageList, $sIconFile, $nIconID) Local $stBIL = DllStructCreate("dword;int[4];uint") DllStructSetData($stBIL, 1, $hImageList) DllStructSetData($stBIL, 2, 1, 1) DllStructSetData($stBIL, 2, 1, 2) DllStructSetData($stBIL, 2, 1, 3) DllStructSetData($stBIL, 2, 1, 4) DllStructSetData($stBIL, 3, $nAlign) Return GUICtrlSendMsg($nCtrl, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL)) EndFunc |
------- Отправлено: 21:52, 26-10-2009 | #3 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Отправлено: 22:34, 26-10-2009 | #4 |
Старожил Сообщения: 186
|
Профиль | Отправить PM | Цитировать Да, действительно круто, спасибо!
|
|
Отправлено: 10:15, 31-10-2009 | #5 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Отправлено: 09:54, 10-03-2010 | #6 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата FlatX007:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIImageList.au3> ; Global $hImageList, $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL) Global $iGUI_Width = 385 Global $iGUI_Height = 162 $Form1 = GUICreate("Form", $iGUI_Width, $iGUI_Height, 192, 186) $Button1 = GUICtrlCreateButton(">", 370, 0, 15, 160, $WS_GROUP) #Region Expanded controls $ExitButton = GUICtrlCreateButton("Exit", 470, 130, 75, 25, $WS_GROUP) GUICtrlCreateInput("Some Input", 405, 20, 121, 21) Opt("GUIResizeMode", $sOld_Opt_GRM) #EndRegion Expanded controls ; GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Button1 _Toggle_ExpandControls_Proc($Form1, $iGUI_Width, $iGUI_Width+165, $Button1, ">", "<") Case $GUI_EVENT_CLOSE, $ExitButton Exit EndSwitch WEnd Func _Toggle_ExpandControls_Proc($hWnd,$iInitWndWidth,$iExpndWidth,$iExpndCtrlID,$sExpndText="<",$sCntrctText=">") Local $iWidth, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics Local Const $SM_CXFIXEDFRAME = 7 ;Window border size $aSysBordMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CXFIXEDFRAME) $aGuiPos = WinGetPos($hWnd) If $aGuiPos[2] > $iExpndWidth Then $iWidth = $iInitWndWidth + ($aSysBordMetrics[0] * 2) $sButtonText = $sExpndText Else $iWidth= $iExpndWidth + ($aSysBordMetrics[0] * 2) $sButtonText = $sCntrctText EndIf GUICtrlSetData($iExpndCtrlID, $sButtonText) WinMove($hWnd, "", $aGuiPos[0], $aGuiPos[1], $iWidth, $aGuiPos[3]) EndFunc |
|
------- Отправлено: 21:19, 15-03-2010 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Нет выбора в "Окна и кнопки" | Striker | Microsoft Windows 2000/XP | 2 | 03-11-2009 02:32 | |
[решено] Поле для ввода IP просвечивает сквозь все вкладки GUI окна | FlatX007 | AutoIt | 1 | 22-06-2009 17:32 | |
[решено] По нажатию по ссылке для скачивания файла в браузере кракозябы | SashaKl | Вебмастеру | 12 | 21-05-2009 18:47 | |
[решено] Как сделать фон окна GUI ? | sashadeg | AutoIt | 5 | 11-05-2009 16:31 | |
[решено] Как прилепить некое окно GUI к координатам окна другой проги | beve | AutoIt | 4 | 09-02-2009 13:41 |
|