GUI Größe

  • Hi Leute...

    Mal ne ziemlich einfache Frage, weiss aber nich wie ich sie lösen soll :musik2:

    Also ich hab ne GUI und die soll auf Knopfdruck nach recht vergrößert werden...
    Habe es schon mit "GUICtrlSetResizing($main, $GUI_DOCKRIGHT)" probiert, aber das geht nicht.

    Also ich habe jetz schon....

    [autoit]

    While 1
    AdlibEnable("_refresh", 15000)
    $Msg = GUIGetMsg()
    Select
    Case $Msg = $GUI_EVENT_CLOSE
    Exit


    Case $Msg = $button
    GUICtrlSetResizing($main, $GUI_DOCKRIGHT) ;das ist ja falsch, also bitte sagt mir mal was da hinkommen müsste...

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndSelect
    WEnd

    [/autoit]


    Vielen Dank schonmal

    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    Hallo!

    Schau dir mal WinMove an.

  • erstmal THX für die Antwort...

    Das hier

    [autoit]

    While 1
    AdlibEnable("_refresh", 15000)
    $Msg = GUIGetMsg()
    Select
    Case $Msg = $GUI_EVENT_CLOSE
    Exit


    Case $Msg = $button
    WinMove("GUI", "", 0, 0, 20, 400);mmh comisch

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndSelect
    WEnd

    [/autoit]

    hab ich jetz mal gemacht. passiert aber garnichts wenn ich auf den Button klicke oO


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    Hallo!


    Hier ein Beispiel:

    [autoit]

    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 200, 300, -1, -1)
    $Button1 = GUICtrlCreateButton("groß", 18, 72, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $Button1
    $arPos = WinGetPos($Form1)
    WinMove($Form1, "", $arPos[0], $arPos[1], 400, $arPos[3])

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Guckst du:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 451, 317, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    $Button1 = GUICtrlCreateButton("AButton1", 160, 132, 121, 29, 0)
    GUICtrlSetOnEvent(-1, "AButton1Click")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    Func AButton1Click() ; rechts oben andocken und vergrößern
    WinMove($Form1, "", @DesktopWidth-500, -1, 500, 600)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]


    Func AForm1Close()
    Exit
    EndFunc

    [/autoit]

    Edit: :evil:
    Selbst am frühen Samstagmorgen ist schon wer schneller ;)

  • Was muss ich machen, wenn ich einfach das Fenster größer haben will, nichts an der Position ändern. Einfach nach rechts vergrößern


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    Hier ein Beispiel, du mußt die aktuellen Daten für die Größe und Position auswerten.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    Dim $minWidth = 464, $Width = 635, $minHeight = 232, $Height = 456
    Dim $x, $y, $PosX = 192, $PosY = 113
    #Region ### START Koda GUI section ### Form=d:\koda\winmove.kxf
    $Form1 = GUICreate("Form1", $Width, $Height, $PosX, $PosY)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    $Group1 = GUICtrlCreateGroup("Position", 16, 16, 200, 117)
    $bLiOb = GUICtrlCreateButton("Links Oben", 28, 40, 75, 20, 0)
    GUICtrlSetOnEvent(-1, "bLiObClick")
    $bReOb = GUICtrlCreateButton("Rechts Oben", 131, 40, 75, 20, 0)
    GUICtrlSetOnEvent(-1, "bReObClick")
    $bLiUn = GUICtrlCreateButton("Links Unten", 28, 97, 75, 19, 0)
    GUICtrlSetOnEvent(-1, "bLiUnClick")
    $bMitte = GUICtrlCreateButton("Mitte", 79, 70, 75, 20, 0)
    GUICtrlSetOnEvent(-1, "bMitteClick")
    $bReUn = GUICtrlCreateButton("Rechts Unten", 131, 97, 75, 20, 0)
    GUICtrlSetOnEvent(-1, "bReUnClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Größe ändern (+/- Pixel)", 232, 16, 200, 117)
    $Label1 = GUICtrlCreateLabel("Breite:", 249, 42, 34, 17)
    $Label2 = GUICtrlCreateLabel("Höhe:", 249, 75, 33, 17)
    $iWidth = GUICtrlCreateInput("", 332, 39, 65, 21)
    $iHeight = GUICtrlCreateInput("", 332, 72, 65, 21)
    $bChange = GUICtrlCreateButton("Ändern", 267, 103, 130, 20, 0)
    GUICtrlSetOnEvent(-1, "bChangeClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    Func AForm1Close()
    Exit
    EndFunc

    Func bChangeClick()
    $x = GUICtrlRead($iWidth)
    $y = GUICtrlRead($iHeight)
    If ($Width + $x) < $minWidth Then
    MsgBox(16, '',"Breitenänderung nicht möglich!"& @LF &"Mindestbreite wird unterschritten.")
    Return
    EndIf
    If ($Height + $y) < $minHeight Then
    MsgBox(16, '',"Höhenänderung nicht möglich!"& @LF &"Mindesthöhe wird unterschritten.")
    Return
    EndIf
    WinMove($Form1, "", $PosX, $PosY, $Width+$x, $Height+$y)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _size()
    Local $size
    $size = WinGetPos("Form1")
    $PosX = $size[0]
    $PosY = $size[1]
    $Width = $size[2]
    $Height = $size[3]
    EndFunc

    Func bLiObClick()
    WinMove($Form1, "", -1, -1)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]


    Func bLiUnClick()
    WinMove($Form1, "", -1, @DesktopHeight-$Height)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]


    Func bMitteClick()
    WinMove($Form1, "", (@DesktopWidth-$Width)/2, (@DesktopHeight-$Height)/2)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]


    Func bReObClick()
    WinMove($Form1, "", @DesktopWidth-$Width, -1)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]


    Func bReUnClick()
    WinMove($Form1, "", @DesktopWidth-$Width, @DesktopHeight-$Height)
    _size()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    EDIT:
    Einen großen Nachteil hat allerdings WinMove(). Wenn du die Größe veränderst, werden die Positionen deiner Controls relativ dazu auch verändert. Ebenso deren Größe.

  • mmh

    Blubkuh hat mir auch was geeigt es geht auch so


    $xyPos = WinGetPos($main)
    WinMove($main, "", $xyPos[0], $xyPos[1], 760)


    Trotzdem Thx


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Hallo zusammen!

    Ja Bugfix da hast du recht, das sich die Position und Größe der Controls ändert, aber man kann diese ja per guictrlsetpos wieder an ort und stelle schaffen! Ist zwar ein wenig arbeit, wenn man viele controls hat, aber es funktioniert!

    Have a nice day!

  • hi...

    Wenn du das jetz noch richtig schön an einem Beispiel machs, setz ich den Status auf gelöst xD

    Sry...weiss nun nochmal nicht soviel über AutoIt^^


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Hi!

    So Waluev just try this:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    Dim $minWidth = 464, $Width = 635, $minHeight = 232, $Height = 456
    Dim $x, $y, $PosX = 192, $PosY = 113
    #Region ### START Koda GUI section ### Form=d:\koda\winmove.kxf
    $Form1 = GUICreate("Form1", $Width, $Height, $PosX, $PosY)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    $Group1 = GUICtrlCreateGroup("Position", 16, 16, 200, 117)
    GUICtrlSetResizing(-1,938) ; ===> behält die Position bei
    $bLiOb = GUICtrlCreateButton("Links Oben", 28, 40, 75, 20, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bLiObClick")
    $bReOb = GUICtrlCreateButton("Rechts Oben", 131, 40, 75, 20, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bReObClick")
    $bLiUn = GUICtrlCreateButton("Links Unten", 28, 97, 75, 19, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bLiUnClick")
    $bMitte = GUICtrlCreateButton("Mitte", 79, 70, 75, 20, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bMitteClick")
    $bReUn = GUICtrlCreateButton("Rechts Unten", 131, 97, 75, 20, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bReUnClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetResizing(-1,938)
    $Group2 = GUICtrlCreateGroup("Größe ändern (+/- Pixel)", 232, 16, 200, 117)
    GUICtrlSetResizing(-1,938)
    $Label1 = GUICtrlCreateLabel("Breite:", 249, 42, 34, 17)
    GUICtrlSetResizing(-1,938)
    $Label2 = GUICtrlCreateLabel("Höhe:", 249, 75, 33, 17)
    GUICtrlSetResizing(-1,938)
    $iWidth = GUICtrlCreateInput("", 332, 39, 65, 21)
    GUICtrlSetResizing(-1,938)
    $iHeight = GUICtrlCreateInput("", 332, 72, 65, 21)
    GUICtrlSetResizing(-1,938)
    $bChange = GUICtrlCreateButton("Ändern", 267, 103, 130, 20, 0)
    GUICtrlSetResizing(-1,938)
    GUICtrlSetOnEvent(-1, "bChangeClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetResizing(-1,938)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    Sleep(100)
    WEnd

    Func AForm1Close()
    Exit
    EndFunc

    Func bChangeClick()
    $x = GUICtrlRead($iWidth)
    $y = GUICtrlRead($iHeight)
    If ($Width + $x) < $minWidth Then
    MsgBox(16, '',"Breitenänderung nicht möglich!"& @LF &"Mindestbreite wird unterschritten.")
    Return
    EndIf
    If ($Height + $y) < $minHeight Then
    MsgBox(16, '',"Höhenänderung nicht möglich!"& @LF &"Mindesthöhe wird unterschritten.")
    Return
    EndIf
    WinMove($Form1, "", $PosX, $PosY, $Width+$x, $Height+$y)
    _size()
    EndFunc

    Func _size()
    Local $size
    $size = WinGetPos("Form1")
    $PosX = $size[0]
    $PosY = $size[1]
    $Width = $size[2]
    $Height = $size[3]
    EndFunc

    Func bLiObClick()
    WinMove($Form1, "", -1, -1)
    _size()
    EndFunc


    Func bLiUnClick()
    WinMove($Form1, "", -1, @DesktopHeight-$Height)
    _size()
    EndFunc


    Func bMitteClick()
    WinMove($Form1, "", (@DesktopWidth-$Width)/2, (@DesktopHeight-$Height)/2)
    _size()
    EndFunc


    Func bReObClick()
    WinMove($Form1, "", @DesktopWidth-$Width, -1)
    _size()
    EndFunc


    Func bReUnClick()
    WinMove($Form1, "", @DesktopWidth-$Width, @DesktopHeight-$Height)
    _size()
    EndFunc

    [/autoit]

    PS: :hm: 111 Posts in einem Autoitforum und KA von Autoit? was hast Du dann eig die ganze gemacht? :schild4: :irre:

    have a nice day!

    Einmal editiert, zuletzt von DjBasslord (14. April 2007 um 18:16)

  • mmh.....

    Glückwunsch von mir an Waluev zur Schnapszahl xD


    Frag ich mich eigentlich auch, hab mal so überlegt

    ich hab 1-2 mal in einem Thread wrkl geholfen
    ich hab vlt 5 mal in nem Thread zur Hilfe beigetragen
    ca 7 mal so getan als könnte ich helfen
    ca 15 mal was zu AutoIt gefragt...
    der Rest ist OT


    gibt einem schon zu denken, was??? xD

    Aba ich scheine die Leute hier nicht zu stören :D (bis auf Huggy)

    also mach ich weiter, GTA sagt ja ich lockere das Forum auf, also mache ich das mal weiter^^. Hab meine Berufung darin gefunden die Shoutbox zu beleben :rofl:

    @ Topic...*grübel*

    Ich wundere mich...Bugfix schafft das was Basslord in 104 Zeilen schafft in einer...den Unterschied check ich aba ni...


    Machts gut
    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    Mit AutoitSetOption("GUIResizeMode",802) wird für ALLE Controls festgelegt, dass sie sich weder in Größe noch in Position verändern, wenn die GUI verändert wird.
    Wenn du aber das nur für einige Controls haben möchtest und für andere nicht, ist die Lösung von DjBasslord anzuwenden.

  • Hi!
    Joa wo Bugfix recht hat!
    BugFix naja schreibarbeit wars nicht wirklich da, Strg + C ^^

    Aber da sieht man mal wie gut das Forum hier ist! Schnelle Antworten, gute Beratung , gute Hilfe usw. und vor ALLEM es ist ÜBERSICHTLICH! nicht so wie das engl.
    *Kompliment an peethebee und gunfood^^*
    Wenn man glaubt man hat es perfekt gelöst, kriegt man hier noch ne bessere Lösung!
    Also an alle weiter so!

    Have a nice day


    Edit BugFix: Hab mal auf gelöst gesetzt.