computergroove

Resizing a GUI with a button

3 posts in this topic

I want to click a button and toggle a GUI Size. I can get it to work for one toggle if I delete the GUI and then call the Main function again but it only works once and when I do this I cannot close the window with the x in the upper right corner. Here is my code:

#include <GUIConstantsEx.au3>

Global $GUI, $fStartMonday = False, $iGridSize = 1, $sTheme = "Blue", $GUIBackX = 800, $GUIBackY = 600, $CalXPos = 20, $CalYPos = 40, $CalWidth = 760, $CalHeight = 520, $CalFontSize = 30, $ToggleSizeValue = 1

_Main()

Func _Main()
    Local $GUI = GUICreate("Calendar example", $GUIBackX, $GuiBackY, -1, -1)
    Opt("GUIOnEventMode",1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetState();Makes the GUI visible to the user


    GUICtrlCreateButton("Toggle Size", 20, 20, 150, 20)
    GUICtrlSetOnEvent(-1, "Btn_ToggleSize")


    While 1
        Sleep(50)
    WEnd

EndFunc

Func _Exit()
    Exit 0
EndFunc

Func Btn_ToggleSize()
    If $ToggleSizeValue == 1 Then ;1024 x 768
        $ToggleSizeValue = 2
        $GUIBackX = 1024
        $GUIBackY = 768
        $CalXPos = 20
        $CalYPos = 40
        $CalWidth = 984
        $CalHeight = 688
        GUIDelete($GUI)
        _Main()
    ElseIf $ToggleSizeValue == 2 Then
 ; 1280 x 1024
        $ToggleSizeValue = 3
        $GUIBackX = 1280
        $GUIBackY = 1024
        $CalXPos = 20
        $CalYPos = 40
        $CalWidth = 1240
        $CalHeight = 944
        GUIDelete($GUI)
        _Main()
    Else
        $ToggleSizeValue = 1; 800 x 600
        $GUIBackX = 800
        $GUIBackY = 600
        $CalXPos = 20
        $CalYPos = 40
        $CalWidth = 760
        $CalHeight = 520
        GUIDelete($GUI)
        _Main()
    EndIf
EndFunc

What should I do to refresh the size settings on the GUI without recreating it?


Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

WinMove can resize it without deleting the GUI

Func Btn_ToggleSize()
    Local const $abscoord_gui = WinGetPos($GUI)
    
    If $ToggleSizeValue == 1 Then ;1024 x 768
        $ToggleSizeValue = 2
        $GUIBackX = 1024
        $GUIBackY = 768
        WinMove($GUI, "", $abscoord_gui[0], $abscoord_gui[1], $GUIBackX, $GUIBackY)
    ElseIf $ToggleSizeValue == 2 Then ; 1280 x 1024
        $ToggleSizeValue = 3
        $GUIBackX = 1280
        $GUIBackY = 1024
        WinMove($GUI, "", $abscoord_gui[0], $abscoord_gui[1], $GUIBackX, $GUIBackY)
    Else
        $ToggleSizeValue = 1; 800 x 600
        $GUIBackX = 800
        $GUIBackY = 600
        WinMove($GUI, "", $abscoord_gui[0], $abscoord_gui[1], $GUIBackX, $GUIBackY)
    EndIf
EndFunc

 

Edited by InunoTaishou

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now