Fragen zu Listboxen

  • Hallo Leute,

    ich plane ein Tool in dem ich in einer Listbox in mehreren Zeilen etwas aufliste. Diese Einträge sollen dann auch doppelklickbar sein und etwas ausführen.
    Wie realisiert man so etwas? Ich habe mit dem Koda FormDesigner (gibts eigentlich noch bessere?) schon ein Bespiel erstellt und die Listeneinträge manuell erstellt (das geht mit Koda nicht, oder?).

    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 633, 454, 193, 115)
    $List1 = GUICtrlCreateList("", 160, 104, 257, 253)
    GUICtrlSetData(-1,"item1", "item1")
    GUICtrlSetData(-1,"item2", "item2")

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Ich will eine Liste zu mountender Laufwerke basteln. Ähnlich dem Tool VNCollect.
    Wenn ein Eintrag geklickt wird, dann soll ein einfaches

    run('net use o: "\\xxx.xxx.xxx.xxx\c$" /USER:XYZ Passwort') ausgeführt werden.

    Einmal editiert, zuletzt von pauLee (10. Januar 2007 um 16:55)

  • Ja, über Buttons habe ich das schon angefangen aber das gefällt mir nicht. Ich will, wenn das Programm irgendwann mal so fertig ist es eventuell noch erweitern um die Möglichkeit manuell neue Mount-Ziele eintragen und in einem Config-File speichern. Das wäre dann hoffentlich über eine Listbox möglich, also, dass die neuen Einträge in der liste ergänzt werden.

    Kannst du mir nicht bitte einen Hinweis geben, wie ich die klickfähigen Listboxen hinbekomme?

    • Offizieller Beitrag

    HI,

    guckst du:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>;Inclusion file for the GUI interface controls
    #include <GuiListView.au3>

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

    Global $ListView
    Global Const $WM_NOTIFY = 0x004E
    Global Const $DebugIt = 1

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

    ;ListView Events
    Global Const $NM_FIRST = 0
    Global Const $NM_LAST = (-99)
    Global Const $NM_OUTOFMEMORY = ($NM_FIRST - 1)
    Global Const $NM_CLICK = ($NM_FIRST - 2)
    Global Const $NM_DBLCLK = ($NM_FIRST - 3)
    ;~ Global Const $NM_RETURN = ($NM_FIRST - 4)
    ;~ Global Const $NM_RCLICK = ($NM_FIRST - 5)
    ;~ Global Const $NM_RDBLCLK = ($NM_FIRST - 6)
    ;~ Global Const $NM_SETFOCUS = ($NM_FIRST - 7)
    ;~ Global Const $NM_KILLFOCUS = ($NM_FIRST - 8)
    ;~ Global Const $NM_CUSTOMDRAW = ($NM_FIRST - 12)
    ;~ Global Const $NM_HOVER = ($NM_FIRST - 13)
    ;~ Global Const $NM_NCHITTEST = ($NM_FIRST - 14)
    ;~ Global Const $NM_KEYDOWN = ($NM_FIRST - 15)
    ;~ Global Const $NM_RELEASEDCAPTURE = ($NM_FIRST - 16)
    ;~ Global Const $NM_SETCURSOR = ($NM_FIRST - 17)
    ;~ Global Const $NM_CHAR = ($NM_FIRST - 18)
    ;~ Global Const $NM_TOOLTIPSCREATED = ($NM_FIRST - 19)
    #endregion End Global variables

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

    Opt("WinTitleMatchMode", 2)

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

    $main_GUI = GUICreate("GuiRegisterMsg Test", 225, 400, 300, 10, BitOR($WS_THICKFRAME, $WS_SIZEBOX))

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

    $ListView = GUICtrlCreateListView("Entry Name|Category", 5, 75, 195, 280, BitOR($LVS_SORTASCENDING, $LVS_SINGLESEL))
    _GUICtrlListViewSetColumnWidth ($ListView, 0, 100)
    _GUICtrlListViewSetColumnWidth ($ListView, 1, 100)
    GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("Name 1|Category 1", $ListView)
    GUICtrlCreateListViewItem("Name 2|Category 2", $ListView)
    GUISetState()

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

    ;Register WM_NOTIFY events
    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    ;-----------------------------------------------------------------------------------------
    ;This case statement exits and updates code if needed
    Case $GUI_EVENT_CLOSE
    Exit
    ;-----------------------------------------------------------------------------------------
    ;put all the misc. stuff here
    Case Else
    ;;;
    EndSwitch
    WEnd

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

    ; WM_NOTIFY event handler
    Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Select
    Case $wParam = $ListView
    Select
    Case $event = $NM_CLICK
    ConsoleWrite("SingleClick" & @LF)
    Case $event = $NM_DBLCLK
    MsgBox(0,"Double Clicked", _GUICtrlListViewGetItemText ($ListView, _GUICtrlListViewGetSelectedIndices($ListView)))
    EndSelect
    EndSelect
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>WM_Notify_Events

    [/autoit]

    So long,

    Mega

  • Ich hätte eine "Rechtsfrage", wenn man mir Koda oder GUIbuilder etc. eine GUI macht und beim einfügen in Editor der Bereich mit z.B.

    Code
    #Region ### START Koda GUI section ### Form=


    eingefasst wir, ist es ok, dass einfach zu löschen oder sollte man dass nicht?

    Viel Grüße Vinschni

  • :schild4: :schild4: :schild4:
    Zu geile Antwort... und sorry für Spam, aber das musste einfach mal raus!!

  • Zitat

    Original von th.meger
    (Aber woher hast du meinen Namen? :musik1: )

    Das ist doch nicht schwer mit deiner Signatur ;)

    Ich hab mal noch ne Frage:

    Ich würde die verschiedenen Items nummerieren...mach ich es so richtig?

    $item1 = GUICtrlCreateListViewItem("sg02 - c:\|10.200.1.183|HUB-Server", $ListView)

    Diesem $item1 will ich dann noch eine IP zuweisen und diese dann als mittels Platzhalter an die Funktion

    run('net use o: "\\xxx.xxx.xxx.xxx\c$" /USER:XYZ Passwort') übergeben.

    Wie mach ich das aber?

  • Ich versuche es mal kurz: da ich knapp 50 verschiedene Laufwerke in meiner Liste habe muß ich diese natürlich mit Ihren IPs an z.B. die Funktion DriveMapAdd (Danke für den guten Tipp) übergeben. Daran knabbere ich jetzt noch aber ich wills auch ein wenig allein schaffen. Kannst mir natürlich einen Tipp auf den Weg geben ;)

    Gute Nacht