Fragen zu GUICtrlCreateList

  • Hi,
    ich erstelle eine Liste mit:
    $liste=GUICtrlCreateList ("", 126,22,170,120)
    dann schreibe ich die Daten rein:
    GuiCtrlSetData(-1, "Eintrag1| Eintrag2", "")
    per Buttom sende ich den ausgwählten Eintrag
    $jobrun=GUICtrlCreateButton ("ausführen", 14,22,75,25)
    und frage den in einer Schleife ab:
    case $msg = $jobrun

    Die Frage ist, kann ich den einzelnen Einträgen einen Wert hinterlegen, wie z.B. in PHP in Formularen? Sodass das was in der Liste zu sehen ist nur der Alias ist und ich mit dem hinterlegtem Wert weiter arbeiten kann?
    Danke

  • mh, nun komme ich etwas ins schleudern. Worin besteht der Unterschied zwischen GUICtrlCreateList und GUICtrlCreateListView?

    Ja, wie würde ich den Wert abfragen? Evtl. durch einen Vergleich im case mit array angabe? <- nur so eine Vermutung ;)

  • Ja möchte ich und ja schaue ich mir an ;)
    Ich vermtue mal, dass ich GuiCtrlGetState verwendet muss oder?
    Kann ich eigentlich die Spaltenbreite festlegen, bzw. auf automatische Breite einstellen?
    Mh das Bsp versteh ich nicht:
    Eigentlich sollte:
    GUICtrlRead($menu1, 1) ;
    den Text zurück geben, ich erhalte aber immer einen nummerischen Wert, wenn ich jedoch
    GUICtrlRead(GUICtrlRead($menu1))
    schreibe, erhalte ich den Text, verstehe aber jetzt nicht ganz warum? Wird dort der Wert nochmal umgewandelt?

    Einmal editiert, zuletzt von sunghost (17. September 2007 um 12:56)

  • und warum muss man 2x GUICtrlRead schreiben?
    wie kann ich dem einzelnen feld nun einen Wert zu weisen? ich würde sonst eine if abfrage im case setzen, ist das ok?
    wie kan nich die spaltenbreite festlegen und
    wie kann man das ganze auto nach alphabet sortieren? in der liste ging es von alleine.
    danke

  • [autoit]


    #include <GUIConstants.au3>
    #include <Process.au3>

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

    Dim $brennpc = "PC1866"
    DIM $text
    Dim $sdir = @ScriptDir

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

    GUICreate("Administrative Freigabe 2.0", 400, 230, 359, 115) ;title,width,height,left,top
    ;GuiSetIcon(@SystemDir & "\mspaint.exe", 0)

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

    $jobrun=GUICtrlCreateButton ("ausführen", 14,100,75,25) ;Buttom text,left,top,width,height
    $close=GUICtrlCreateButton ("beenden", 14,140,75,25) ;Buttom

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

    $input = GUICtrlCreateInput("hamgujpc",126,20,180,20,-1) ;text,left,top,width,height,style

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

    $pcliste = GUICtrlCreateListView("Name | PC-Name", 126,55,180,120,-1) ;text,left,top,width,height,style=$LVS_SHOWSELALWAYS
    $item_1 = GuiCtrlCreateListViewItem(" PC|1863",$pcliste)
    $item_2 = GuiCtrlCreateListViewItem("Test|PC186",$pcliste)

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

    GUICtrlCreateLabel("Eingabe:",14,20) ;text,left,top,width,height
    GUICtrlCreateLabel("oder",14,40) ;text,left,top,width,height
    GUICtrlCreateLabel("Auswahl:",14,60) ;text,left,top,width,height

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

    GUISetState (@SW_SHOW)

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

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()

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

    Select
    case $msg = $jobrun
    MsgBox(0,"listview item",GUICtrlRead(GUICtrlRead($pcliste)),2)
    ;GUICtrlSetData($pclist,"You clicked button No1|")
    Run("explorer.exe \\"& $pcliste &"\c$");

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

    if WinWait("Verbindung zu herstellen","",15) Then
    Send("!b")
    SEND($text &"\admin")

    Send("!k")
    Send("{ASC 043}")
    Send("pw");
    Send("{ASC 033}")
    Send("{ENTER}");
    EndIf

    Case $msg = $close
    ;MsgBox(0,"", "the closing button has been clicked",2)
    Exit
    EndSelect
    Wend

    [/autoit]
    • Offizieller Beitrag

    HI,

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Process.au3>
    #include <GuiListView.au3>

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

    Dim $brennpc = "PC1866"
    Dim $text
    Dim $sdir = @ScriptDir

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

    GUICreate("Administrative Freigabe 2.0", 400, 230, 359, 115) ;title,width,height,left,top
    ;GuiSetIcon(@SystemDir & "\mspaint.exe", 0)

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

    $jobrun = GUICtrlCreateButton("ausführen", 14, 100, 75, 25) ;Buttom text,left,top,width,height
    $close = GUICtrlCreateButton("beenden", 14, 140, 75, 25) ;Buttom

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

    $input = GUICtrlCreateInput("hamgujpc", 126, 20, 180, 20, -1) ;text,left,top,width,height,style

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

    $pcliste = GUICtrlCreateListView("Name | PC-Name", 126, 55, 180, 120, -1) ;text,left,top,width,height,style=$LVS_SHOWSELALWAYS
    GUICtrlCreateListViewItem(" PC|1863", $pcliste)
    GUICtrlCreateListViewItem("Test|PC186", $pcliste)

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

    GUICtrlCreateLabel("Eingabe:", 14, 20) ;text,left,top,width,height
    GUICtrlCreateLabel("oder", 14, 40) ;text,left,top,width,height
    GUICtrlCreateLabel("Auswahl:", 14, 60) ;text,left,top,width,height

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

    ;Breite
    _GUICtrlListViewSetColumnWidth ($pcliste, 0, 75)
    _GUICtrlListViewSetColumnWidth ($pcliste, 1, $LVSCW_AUTOSIZE_USEHEADER)

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

    GUISetState(@SW_SHOW)
    ; SORTIEREN! Doppelklick
    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($pcliste) ]

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

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $jobrun
    MsgBox(0, "listview item", _GUICtrlListViewGetItemText($pcliste, _GUICtrlListViewGetSelectedIndices($pcliste)))


    ;GUICtrlSetData($pclist,"You clicked button No1|")
    ; Run("explorer.exe \\"& $pcliste &"\c$");
    #cs
    if WinWait("Verbindung zu herstellen","",15) Then
    Send("!b")
    SEND($text &"\admin")

    Send("!k")
    Send("{ASC 043}")
    Send("pw");
    Send("{ASC 033}")
    Send("{ENTER}");
    EndIf
    #ce
    Case $msg = $close
    ;MsgBox(0,"", "the closing button has been clicked",2)
    Exit

    ; SORTIEREN!!!!


    Case $msg = $pcliste
    ; sort the list by the column header clicked on
    _GUICtrlListViewSort($pcliste, $B_DESCENDING, GUICtrlGetState($pcliste))
    EndSelect
    WEnd

    [/autoit]

    So long,

    Mega

  • Danke für die Mühe.

    Mir ist aufgefallen, wenn du kein Item auswählst und dann sortierst, dass nur die unter dem Namen stehenden Items sortiert werden.
    =hat sich auch erledigt, es ist blöd den selben Namen für 2 Felder zu verwenden - ist schon fast ein Zaubertrick ;)

    Wo kommt die Klasse Guilistview her? Welche Methoden gibt es dort noch?
    =hat sich geklärt, wer richtig tippen kann ist klar im ....

    Das Abfragen von Werten fehlt noch, oder? Also wähle PC1 aus und sage nach dem abesenden des dies id 12 ist z.b.
    Danke für die schnelle Hilfe

    2 Mal editiert, zuletzt von sunghost (17. September 2007 um 16:09)

  • und noch etwas:
    Wie kann ich die Liste und das Eingabefeld kontrollieren, also auf Eingaben kontrollieren? Ich habe eben versucht den Fehler 0 abzufangen und dann die Eingabe zu verarbeiten, dies hat so nicht funktioniert. Idee?

    so habe dies hinbekommen:

    [autoit]


    case $msg = $jobrun
    if NOT GUICtrlRead(GUICtrlRead($pcliste)) = "" Then
    ;MsgBox(0,"Item aus der Liste:",GUICtrlRead(GUICtrlRead($pcliste)),2)
    ;GUICtrlSetData($pclist,"You clicked button No1|")
    MsgBox(0, "listview item", _GUICtrlListViewGetItemText($pcliste, _GUICtrlListViewGetSelectedIndices($pcliste)))
    Else
    MsgBox(0,"Item aus der Eingabe:",GUICtrlRead($input),4)
    EndIf

    [/autoit]

    wäre das autoit konform?
    wie schaffe ich es auf eine Eingabe im Inputfeld zu reagieren, also wenn jemand etwas eintippt und dann enter drückt?

    Einmal editiert, zuletzt von sunghost (17. September 2007 um 16:31)

  • danke und was sagst du zu der Logik? Bin ja kein Programmierer und möchte noch dazu lernen, wenn du sagst, dass ist nicht konform oder unlogisch, dann ändere ich das und ändere meinen Stil ;)

    Danke für die Hilfe

  • schließen = gelöst ;)
    Danke und einen schönen Tag noch

    2 Mal editiert, zuletzt von sunghost (18. September 2007 um 11:09)