WinMove Fehler

  • Hallo,

    ich habe versucht in meiner GUI mittels WinMove beim drücken von verschiedenen Buttons die Größe zu ändern.
    Das vergrößern der GUI um z.b. 200 funktioniert bestens, wenn ich aber mit einem anderen Button wieder auf die original Größe zurück möchte wird die GUI kleiner wie original definiert.

    Evtl. liegt es ja auch an meinem Versuch das ganze in eine Funktion zu packen, aber da ich die Größenänderung noch öfters brauche war es die praktischste Methode.
    Allerdings habe ich auch bei direktem Aufruf ohne funktion das gleiche Problem.

    Hab hier nur einen Auszug meines Codes gepostet der das Problem aufzeigt, daher die evtl unnützen Includes :)

    [autoit]


    #include <Array.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiButton.au3>
    #include <GuiImageList.au3>
    #include <ListViewConstants.au3>

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

    Opt("GUIResizeMode",$GUI_DOCKALL)
    Opt("GUIDataSeparatorChar", "/")

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

    Local $guiWidth = "825"
    Local $guiHeight = "490"

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

    $hGUI = GUICreate("Bücherliste", $guiWidth, $guiHeight+0, -1, -1)
    $cListView = GUICtrlCreateListView("Autor / Serie / Titel / Genre", 8, 64, $guiWidth-16, 361)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 185)
    $cButton_Load = GUICtrlCreateButton("Liste laden", 8, 16, 105, 33)
    $hImgLoad = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgLoad, "shell32.dll", -235, True)
    _GUICtrlButton_SetImageList($cButton_Load, $hImgLoad, 1)
    $cInput = GUICtrlCreateInput("", 136, 24, 145, 21)
    GUICtrlSendMsg(-1, $EM_SETCUEBANNER, True, "Suchbegriff eingeben...")
    $cButton_Search = GUICtrlCreateButton("Suchen", 304, 16, 105, 33)
    $hImgSearch = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgSearch, "shell32.dll", -23, True)
    _GUICtrlButton_SetImageList($cButton_Search, $hImgSearch, 1)
    $cLabel_hit = GUICtrlCreateLabel("", 420, 25, 250, 25)
    $cButton_exit = GUICtrlCreateButton("Verlassen", $guiWidth-113, 16, 105, 33)
    $hImgExit = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgExit, "shell32.dll", -28, True)
    _GUICtrlButton_SetImageList($cButton_exit, $hImgExit, 1)
    $cButton_edit = GUICtrlCreateButton("Editieren", 8, 440, 105, 33)

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

    GUISetState(@SW_SHOW)

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

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

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

    Case $cButton_Load
    _GuiResize(0)
    $posEdit = WinGetPos($hGUI)
    WinMove($hGUI, "", $posEdit[0], $posEdit[1], $guiWidth, $guiHeight)
    Case $cButton_edit
    _GuiResize(200)

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

    EndSwitch
    WEnd

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

    ;Change GuiHeight
    Func _GuiResize($newHeight)
    $posEdit = WinGetPos($hGUI)
    ;MsgBox(0, $posEdit[0], $posEdit[1])
    WinMove($hGUI, "", $posEdit[0], $posEdit[1], $guiWidth, $guiHeight+$newHeight)
    EndFunc

    [/autoit]

    Vielen Dank

    Einmal editiert, zuletzt von mks (7. Januar 2013 um 13:14)

  • Ich würde behaupten, GUICreate() arbeitet mit Außenmaßen (inkl. Rahmen und Titelleiste) und WinMove() mit den Maßen der Arbeitsfläche.

    So klappts vielleicht... (ungetestet):

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiButton.au3>
    #include <GuiImageList.au3>
    #include <ListViewConstants.au3>

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

    Opt("GUIResizeMode",$GUI_DOCKALL)
    Opt("GUIDataSeparatorChar", "/")

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

    Local $guiWidth = "825"
    Local $guiHeight = "490"

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

    $hGUI = GUICreate("Bücherliste", $guiWidth, $guiHeight+0, -1, -1)
    $cListView = GUICtrlCreateListView("Autor / Serie / Titel / Genre", 8, 64, $guiWidth-16, 361)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 185)
    $cButton_Load = GUICtrlCreateButton("Liste laden", 8, 16, 105, 33)
    $hImgLoad = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgLoad, "shell32.dll", -235, True)
    _GUICtrlButton_SetImageList($cButton_Load, $hImgLoad, 1)
    $cInput = GUICtrlCreateInput("", 136, 24, 145, 21)
    GUICtrlSendMsg(-1, $EM_SETCUEBANNER, True, "Suchbegriff eingeben...")
    $cButton_Search = GUICtrlCreateButton("Suchen", 304, 16, 105, 33)
    $hImgSearch = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgSearch, "shell32.dll", -23, True)
    _GUICtrlButton_SetImageList($cButton_Search, $hImgSearch, 1)
    $cLabel_hit = GUICtrlCreateLabel("", 420, 25, 250, 25)
    $cButton_exit = GUICtrlCreateButton("Verlassen", $guiWidth-113, 16, 105, 33)
    $hImgExit = _GUIImageList_Create(24, 24, 5, 3)
    _GUIImageList_AddIcon($hImgExit, "shell32.dll", -28, True)
    _GUICtrlButton_SetImageList($cButton_exit, $hImgExit, 1)
    $cButton_edit = GUICtrlCreateButton("Editieren", 8, 440, 105, 33)

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

    GUISetState(@SW_SHOW)

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

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

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

    Case $cButton_Load
    _GuiResize(-200)
    Case $cButton_edit
    _GuiResize(200)

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

    EndSwitch
    WEnd

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

    ;Change GuiHeight
    Func _GuiResize($newHeight)
    $posEdit = WinGetPos($hGUI)
    WinMove($hGUI, "", $posEdit[0], $posEdit[1], $posEdit[2], $posEdit[3] + $newHeight)
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (7. Januar 2013 um 12:56)

  • Ich hatte in Zeile 59 einen Index beim Array vergessen. Probier nochmal....

    Edit: Bei mir gehts. Nur 1x zu oft auf 'Laden' geklick, kommst Du an 'Editieren' nicht mehr ran. Da must Du im Script Vorsichtsmaßnahmen treffen !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (7. Januar 2013 um 13:03)