Button im GUI bewegen

  • also, ich weiss das es das Thema schon mal gab, aber irgendwie werd ich daraus nicht schlau.

    Ich hab einen Button im Feld und möchte den beim Drücken einer Taste nach links oder rechts bzw. oben oder unten bewegen.
    Und GuiCtrlSetPos versteh ich nicht ganz, kann mir das jemand etwas genauer erklären?

    Danke im Voraus^^

  • Hallo MilkOfUlquiorra,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem: erklären kann es sicher niemand besser als die Hilfe

    und hier ein Beispiel wie ein Btton mit Hilfe der rechten Maustaste innerhalb der GUI verschoben werden kann:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #Include <Misc.au3>

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

    $dll = DllOpen("user32.dll")
    Global $btn_width = 150
    Global $btn_height = 50

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

    $gui = GUICreate("Bild", 475, 337, $btn_width, $btn_height)
    $Button = GUICtrlCreateButton("Mit der rechten Taste kann ich verschoben werden",10,10,150,50,$BS_MULTILINE)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $gui_EVENT_CLOSE
    DllClose($dll)
    Exit
    Case $Button
    MsgBox(0,"Message","The movable Button was clicked")
    Case $GUI_EVENT_SecondaryDOWN
    $mPos = GUIGetCursorInfo($gui)
    If $mPos[4] = $Button Then
    While _IsPressed("02", $dll)
    $mPos = GUIGetCursorInfo($gui)
    $pPos = ControlGetPos($gui, '', $Button)
    ControlMove($gui, '', $Button, $mPos[0] - ($btn_width / 2), $mPos[1] - ($btn_height / 2))
    WEnd
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • ok danke klappt.

    Ab was muss ich schreiben, wenn ich das ganze nicht mit der Rechten Maustaste sondern mit einer Pfeiltaste machen will?

  • DU musst einen anderen Hexkey bei _ispressed verwenden (gibts hier: [ gelöst ] _IsPressed() - KeyListe)
    Außerdem musst du das ohne Switch-Abfrage dann in die While-Schleife schreiben:
    Bsp:


    Spoiler anzeigen
    [autoit]


    #include <Misc.au3>

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

    $gui = GUICreate("Ich bin eine Gui")
    $x = 150
    $y = 0
    $button = GUICtrlCreateButton("Steuer mich mit den Pfeiltasten!", $x, $y, 50, 25)
    GUISetState(@SW_SHOW)
    While 1
    If _IsPressed(25) Then ;Pfeiltastenhexkeys verwenden
    $x -= 0.05
    ControlMove($gui, "", $button, $x, $y, 50, 25)

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

    ElseIf _IsPressed(27) Then
    $x += 0.05
    ControlMove($gui, "", $button, $x, $y, 50, 25)

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

    ElseIf _IsPressed(26) Then
    $y -= 0.05
    ControlMove($gui, "", $button, $x, $y, 50, 25)

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

    ElseIf _IsPressed(28) Then
    $y += 0.05
    ControlMove($gui, "", $button, $x, $y, 50, 25)
    EndIf
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von stayawayknight (20. September 2010 um 17:37)