Что нового

[Элементы GUI] Изменение формы окна

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Всем Доброе время суток!
Мне нужно сделать например нажать на кнопку и форма растянулась, возможно ли сделать?
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>

$GUI_Windows_Title	= "Title"	
$Vysota = 400
$Shirina = 400


$GUI=GUICreate($GUI_Windows_Title,$Vysota,$Shirina,-1,-1,$GUI_SS_DEFAULT_GUI, $WS_EX_COMPOSITED)
$Sizet = GUICtrlCreateButton ("Size",10,340, 120,30)
$Resizet = GUICtrlCreateButton ("Resize",130,340, 120,30)
$TestButton = GUICtrlCreateButton ("Test",10,340, 120,30)
$TestInput=GUICtrlCreateInput("Test",130,340, 120,30)
GUICtrlSetResizing ( $TestButton, 128+32 )
GUICtrlSetResizing ( $TestInput, 128+32 )

GUISetState (@SW_SHOW)

While 1
$msg = GUIGetMsg ()
Select
	Case $msg = $Sizet
		_Size(200)
	Case $msg = $Resizet 
		_Resize (200)
	Case $msg = $GUI_EVENT_CLOSE
		Exit
EndSelect
WEnd

func _Size ( $long)
	$size=WinGetPos( $GUI_Windows_Title )
	for $s=0 to $long  Step 1
		WinMove(  $GUI_Windows_Title,"",$size[0],$size[1],$size[2] ,$size[3]+$s )
		Sleep(0)
	next
EndFunc
	
func _Resize ($long)	
	$size=WinGetPos( $GUI_Windows_Title )
	for $s=$long to 0 Step -1
		WinMove(  $GUI_Windows_Title,"",$size[0],$size[1],$size[2],$size[3]+$s - $long)
		Sleep(0)
	next
EndFunc
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
А можно ли сделать что бы TestButton и TestInput не двигались т.е. стояли на месте а форма выдвинулась?
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Yoshiyuki [?]
А можно ли сделать что бы TestButton и TestInput не двигались т.е. стояли на месте а форма выдвинулась?
Да можно

Измени строчки


Код:
GUICtrlSetResizing ( $TestButton, 128+32 )
GUICtrlSetResizing ( $TestInput, 128+32 )


на

Код:
GUICtrlSetResizing ( $TestButton, 768+32 )
GUICtrlSetResizing ( $TestInput, 768+32 )
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
У меня на эту тему есть другой пример:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIImageList.au3>
#include <GUIButton.au3>

Global $hImageList = _GUIImageList_Create(16, 16, 5, 1)
Global $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL)
Global $iGUI_Height = 200

$hGUI = GUICreate("Expand GUI Example", 300, $iGUI_Height, -1, -1, -1, $WS_EX_TOOLWINDOW)
$nExpand_Button = GUICtrlCreateButton("Expand", 20, 80, 80, 22, $BS_ICON)
_GUICtrlButton_SetImageEx($nExpand_Button, @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)

#EndRegion Expanded controls

Opt("GUIResizeMode", $sOld_Opt_GRM)
GUISetState()

While 1
	$Msg = GUIGetMsg()
	
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			_GUIImageList_Destroy($hImageList)
			Exit
		Case $nExpand_Button
			_Toggle_ExpandControls_Proc($hGUI, $iGUI_Height, $iGUI_Height + 80, $nExpand_Button)
	EndSwitch
WEnd

Func _Toggle_ExpandControls_Proc($hWnd, $iInitWndHeight, $iExpndHeight, $iExpndCtrlID, $sExpndText = "Expand", $sCntrctText = "Collapse")
	Local $iHeight, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics
	
	Local $aWinSize = WinGetPos($hWnd)
	Local $aWinClientSize = WinGetClientSize($hWnd)
	
	Local $iBorderWidth = $aWinSize[2] - $aWinClientSize[0]
	Local $iCaptionHeight = $aWinSize[3] - $aWinClientSize[1] - $iBorderWidth
	
	If $aWinSize[3] > $iExpndHeight + $iCaptionHeight Then
		_GUICtrlButton_SetImageEx($nExpand_Button, @SystemDir & "\rasdlg.dll", 14)
		
		$iHeight = $iInitWndHeight + $iCaptionHeight + $iBorderWidth
		$sButtonText = $sExpndText
	Else
		_GUICtrlButton_SetImageEx($nExpand_Button, @SystemDir & "\rasdlg.dll", 16)
		
		$iHeight = $iExpndHeight + $iCaptionHeight + $iBorderWidth
		$sButtonText = $sCntrctText
	EndIf
	
	GUICtrlSetData($iExpndCtrlID, $sButtonText)
	WinMove($hWnd, "", $aWinSize[0], $aWinSize[1], $aWinSize[2], $iHeight)
EndFunc

Func _GUICtrlButton_SetImageEx($nCtrlID, $sIconFile, $nIconID = 0, $nAlign = -1)
	_GUIImageList_Remove($hImageList, -1)
	_GUIImageList_AddIcon($hImageList, $sIconFile, $nIconID)
	_GUICtrlButton_SetImageList($nCtrlID, $hImageList)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Изменённый пример для совместимости с Vista+:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIImageList.au3>
#include <GUIButton.au3>

Global $hImageList = _GUIImageList_Create(16, 16, 5, 1)
Global $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL)
Global $iGUI_Height = 200

Global $iExpndIndx = 14
Global $iCllpsIndx = 16

If StringRegExp(@OSVersion, "^WIN_(VISTA|7)$") Then
	$iExpndIndx += 1
	$iCllpsIndx += 1
EndIf

$hGUI = GUICreate("Expand GUI Example", 300, $iGUI_Height, -1, -1, -1, $WS_EX_TOOLWINDOW)
$nExpand_Button = GUICtrlCreateButton("Expand", 20, 80, 80, 22) ;, $BS_ICON)
_GUICtrlButton_SetImageEx($nExpand_Button, @SystemDir & "\rasdlg.dll", $iExpndIndx)

#Region Expanded controls

GUICtrlCreateButton("Some Button", 20, 240, 80)
GUICtrlCreateButton("Other Button", 120, 240, 80)
GUICtrlCreateInput("Some Input", 20, 200, 200, 20)

#EndRegion Expanded controls

Opt("GUIResizeMode", $sOld_Opt_GRM)
GUISetState()

While 1
	$Msg = GUIGetMsg()
	
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			_GUIImageList_Destroy($hImageList)
			Exit
		Case $nExpand_Button
			_Toggle_ExpandControls_Proc($hGUI, $iGUI_Height, $iGUI_Height + 80, $nExpand_Button)
	EndSwitch
WEnd

Func _Toggle_ExpandControls_Proc($hWnd, $iInitWndHeight, $iExpndHeight, $iExpndCtrlID, $sExpndText = "Expand", $sCntrctText = "Collapse")
	Local $iHeight, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics
	
	Local $aWinSize = WinGetPos($hWnd)
	Local $aWinClientSize = WinGetClientSize($hWnd)
	
	Local $iBorderWidth = $aWinSize[2] - $aWinClientSize[0]
	Local $iCaptionHeight = $aWinSize[3] - $aWinClientSize[1] - $iBorderWidth
	
	If $aWinSize[3] > $iExpndHeight + $iCaptionHeight Then
		_GUICtrlButton_SetImageEx($nExpand_Button, @SystemDir & "\rasdlg.dll", $iExpndIndx)
		
		$iHeight = $iInitWndHeight + $iCaptionHeight + $iBorderWidth
		$sButtonText = $sExpndText
	Else
		_GUICtrlButton_SetImageEx($nExpand_Button, @SystemDir & "\rasdlg.dll", $iCllpsIndx)
		
		$iHeight = $iExpndHeight + $iCaptionHeight + $iBorderWidth
		$sButtonText = $sCntrctText
	EndIf
	
	GUICtrlSetData($iExpndCtrlID, $sButtonText)
	WinMove($hWnd, "", $aWinSize[0], $aWinSize[1], $aWinSize[2], $iHeight)
EndFunc

Func _GUICtrlButton_SetImageEx($nCtrlID, $sIconFile, $nIconID = 0, $nAlign = -1)
	_GUIImageList_Remove($hImageList, -1)
	_GUIImageList_AddIcon($hImageList, $sIconFile, $nIconID)
	_GUICtrlButton_SetImageList($nCtrlID, $hImageList)
EndFunc
 

running-frag

why me?
Сообщения
441
Репутация
60
Последний пример хороший. Но если у нас не одна такая кнопка? Ну допустим две параллельных? И у каждой (в выпадающей зоне) свои данные (т.е. содержание разное). Как тогда быть?


Добавлено:
Сообщение автоматически объединено:

Додумался. :smile:

Ещё раз спс за пример. ;)


Добавлено:
Сообщение автоматически объединено:

Хотя не, поспешил, не получается, если данные перенести в функцию _Toggle_ExpandControls_Proc () то они "всегда будут отображаться" после первого вызова. :(
 
Верх