![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] По нажатию кнопки в GUI снизу появляется дополнительный сектор окна |
|
[решено] По нажатию кнопки в GUI снизу появляется дополнительный сектор окна
|
Старожил Сообщения: 186 |
Добрый день! Нужно, чтобы по нажатию кнопки снизу появлялась до этого не существовавшая часть окна (ширина равна ширине изначального 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 |
|