GUICtrlCreateListView an GUI anpassen

  • HI Leute!

    Mein Problem ist folgendes.
    Ich möchte das sich die GUICtrlCreateListView an die GUI anpasst egal wie groß diese ist.
    Es funktioniert auch beim "ersten" mal.
    Nur wird die listview im Programm auch gelöscht mit GUICtrlDelete($listview) und dann wieder neu erstellt.
    Und hier entsteht mein Problem das die Listview dann genau so groß ist wie ich sie beim GUICtrlCreate angebe.

    Danke
    Florian

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GuiListView.au3>

    GuiCreate("Desktop Größe Test", 800, 600, -1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS) )

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

    $Button_2 = GuiCtrlCreateButton("Start", 75, 10, 55, 20)

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

    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", 10, 100, 780, 480, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_2
    If $listview <> 0 Then
    GUICtrlDelete($listview)
    EndIf
    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", 10, 100, 780, 480, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    EndSelect
    WEnd

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

    If not :?: then ?( else :thumbup:

  • Leider bekomme ich das mit GUICtrlSetResizing auch nicht hin.
    Hat eigendlich keinen Effekt auf mein ListView.
    Aber danke

    Florian

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <GuiListView.au3>

    GuiCreate("Desktop Größe Test", 800, 600, -1, -1 , BitOR($WS_SIZEBOX , $WS_SYSMENU , $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX ) )

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

    $Button_2 = GuiCtrlCreateButton("Start", 75, 10, 55, 20)

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

    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", 10, 100, 780, 450, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_2
    If $listview <> 0 Then
    GUICtrlDelete($listview)
    EndIf
    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", -1, -1, -1, -1, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    GUICtrlSetResizing ($listview,$GUI_DOCKAUTO)
    EndSelect
    WEnd

    [/autoit]

    If not :?: then ?( else :thumbup:

  • OK ich habe eine Lösung gefunden.
    Mit ControlGetPos habe ich die Positon ausgelesen dann die listview gelöscht und neu erstellt mit den Positionsangaben vom "alten" listview.
    Das ist meine Lösung.
    Gibt es eine andere, "saubere" Lösung ?
    Kann man ein listview element auch ohne es zu löschen vom Inhalt befreien?
    Weil dann würde ich es nicht neu erstellten müssen und das Ändern der Fenstergröße wäre dann auch kein Problem.

    LG Florian

    Meine Lösung

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GuiConstants.au3>
    #include <GuiListView.au3>

    GuiCreate("Desktop Größe Test", 800, 600, -1, -1 , BitOR($WS_SIZEBOX , $WS_SYSMENU , $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX ) )

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

    $Button_2 = GuiCtrlCreateButton("Start", 75, 10, 55, 20)

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

    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", 10, 100, 780, 450, -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_2
    If $listview <> 0 Then
    $wsize = ControlGetPos ( "", "", $listview );WinGetClientSize("")
    GUICtrlDelete($listview)
    EndIf

    $listview = GUICtrlCreateListView("Nr. |IP Adresse |PC Name |User |Office |Uptime |VNC |OS", $wsize[0], $wsize[1], $wsize[2] , $wsize[3] , -1, BitOR($LVS_EX_REGIONAL, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    ;GUICtrlSetResizing ($listview,$GUI_DOCKBORDERS)
    EndSelect
    WEnd

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

    If not :?: then ?( else :thumbup:

  • Ich führe einen "scann" durch der mir die listview mit Daten befüllt. Dazu klickt man auf den Start Button.
    Nach Abschluss des "scann" kann man wieder auf den Start Button klicken und es soll die listview wieder neu befüllen. (ohne das die alten Daten darin enthalten sind).
    Deshalb lösch ich die listview jedes Mal bevor sie wieder neu erstellt und befüllt wird.

    If not :?: then ?( else :thumbup: