lukasz-41

Controls move along with expanded window

3 posts in this topic

Good day, this is my first post on this forum. I have tried to find out a solution to my problem in other folks' posts and as I have not found any, I am writing this.

I am working on a button which will expand the GUI window when pressed. If already expanded, pressing the button will make the window shrink again. The code seems to work, but there is a problem I cannot solve. When the window expands, the button moves down and that "leap" is proportional to the expansion. I do not know why, as its coordinates are fixed. The other button is "empty" and it has been added only to check if the remaining controls are going to move as well.

I will owe a lot for assistance.

Lukas

Here is the code:

 

Quote

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <File.au3>
#include <Array.au3>
#include <WinAPIFiles.au3>


Local $WinH1=300, $WinH2=500 ;window heights - unexpanded and expanded
Local $Frame = GUICreate("Window Expand", 300 ,$WinH1) ;window frame
Local $ExpandBtn = GUICtrlCreateButton("Expand", 5,  250, 60, 20) ;expand button
Local $AnotherBtn = GUICtrlCreateButton("Another", 70,  250, 60, 20) ;another button

    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
        ExitLoop
            Case $ExpandBtn ;procedure upon button pressing
        Local $WPos = WinGetPos($Frame)
        If $WPos[3] < $WinH2 Then WinMove($Frame, "",$WPos[0], $WPos[1], $WPos[2], $WinH2)
        If $WPos[3] >= $WinH2 Then WinMove($Frame, "",$WPos[0], $WPos[1], $WPos[2], $WinH1)
        EndSwitch
    WEnd

 

Share this post


Link to post
Share on other sites



lucasz-41,

Welcome to the AutoIt forums.

If you want the button to stay in the same place you need to tell it to:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $WinH1 = 300, $WinH2 = 500 ;window heights - unexpanded and expanded
Local $Frame = GUICreate("Window Expand", 300, $WinH1) ;window frame
Local $ExpandBtn = GUICtrlCreateButton("Expand", 5, 250, 60, 20) ;expand button
GUICtrlSetResizing(-1, $GUI_DOCKALL) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Local $AnotherBtn = GUICtrlCreateButton("Another", 70, 250, 60, 20) ;another button

GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $ExpandBtn ;procedure upon button pressing
            Local $WPos = WinGetPos($Frame)
            If $WPos[3] < $WinH2 Then WinMove($Frame, "", $WPos[0], $WPos[1], $WPos[2], $WinH2)
            If $WPos[3] >= $WinH2 Then WinMove($Frame, "", $WPos[0], $WPos[1], $WPos[2], $WinH1)
    EndSwitch
WEnd

M23

P.S. When you post code please use Code tags - see here how to do it.  Then you get a scrolling box and syntax colouring as you can see from the above.

 


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Thank you so very much for prompt response. I felt the window was resized rather than expanded, but it would take ages for me to find the proper command.

I have added Opt("GUIResizeMode",$GUI_DOCKALL) at the beginning, to avoid setting GUICtrlSetResizing() for each control in the window.

Thanks again,

Lukas

 

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