Jump to content

Recommended Posts

Posted

Hi,

i've been scripting a lot with GUIs lately and i am wondering if there is a way to make controls dragable/resizable

I'm looking to build onto this example:

#include <GuiConstants.au3>
#include <misc.au3>

$gui = GUICreate("drag input")
$ip = GUICtrlCreateInput("drag me", 20, 20, 120, 22)
GUISetState()
While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            $nc = GUIGetCursorInfo()
            If $nc[4] = $ip Then
                $mp = MouseGetPos()
                $cp = ControlGetPos("drag input", "", $ip)
                $max = WinGetClientSize($gui)
                While _IsPressed(1)
                    $nm = MouseGetPos()
                    $x = $cp[0] - $mp[0] + $nm[0]
                    $y = $cp[1] - $mp[1] + $nm[1]
                    Select
                        Case $y < 0
                            $y = 0
                        Case $y > $max[1]-$cp[3]
                            $y = $max[1]-$cp[3]
                    EndSelect
                    Select
                        Case $x < 0
                            $x = 0
                        Case $x > $max[0]-$cp[2]
                            $x = $max[0]-$cp[2]
                    EndSelect
                    ControlMove("drag input", "", $ip, $x,$y)
                    Sleep(10)
                WEnd
                
            EndIf
    EndSwitch
WEnd

(From http://www.autoitscript.com/forum/index.php?showtopic=74986)

I want to be able to have the input box resizable just like windows are (from the corner)

If anyone has any ideas that would be much appreciated :P

Posted

  APPLEEATER said:

Hi,

i've been scripting a lot with GUIs lately and i am wondering if there is a way to make controls dragable/resizable

I'm looking to build onto this example:

#include <GuiConstants.au3>
#include <misc.au3>

$gui = GUICreate("drag input")
$ip = GUICtrlCreateInput("drag me", 20, 20, 120, 22)
GUISetState()
While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            $nc = GUIGetCursorInfo()
            If $nc[4] = $ip Then
                $mp = MouseGetPos()
                $cp = ControlGetPos("drag input", "", $ip)
                $max = WinGetClientSize($gui)
                While _IsPressed(1)
                    $nm = MouseGetPos()
                    $x = $cp[0] - $mp[0] + $nm[0]
                    $y = $cp[1] - $mp[1] + $nm[1]
                    Select
                        Case $y < 0
                            $y = 0
                        Case $y > $max[1]-$cp[3]
                            $y = $max[1]-$cp[3]
                    EndSelect
                    Select
                        Case $x < 0
                            $x = 0
                        Case $x > $max[0]-$cp[2]
                            $x = $max[0]-$cp[2]
                    EndSelect
                    ControlMove("drag input", "", $ip, $x,$y)
                    Sleep(10)
                WEnd
                
            EndIf
    EndSwitch
WEnd

(From http://www.autoitscript.com/forum/index.php?showtopic=74986)

I want to be able to have the input box resizable just like windows are (from the corner)

If anyone has any ideas that would be much appreciated :P

One easy way is to add the style $WS_SIZEBOX

$ip = GUICtrlCreateInput("drag me", 20, 20, 120, 22,$WS_SIZEBOX)
Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Posted (edited)

  martin said:

One easy way is to add the style $WS_SIZEBOX

$ip = GUICtrlCreateInput("drag me", 20, 20, 120, 22,$WS_SIZEBOX)
Is it really that easy?

wow...

i should have looked through the Styles :P

Thanks Martin!

Edit:

Any way to have that work on labels and all other types of controls?

i have tested it on input button and label

and label doesn't work

Thanks :(

Edited by APPLEEATER
Posted

 

  Reveal hidden contents

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...