GUI mit Listview

  • Hallo liebe Com ,
    ich bin noch in der Testphase mit Guis erstellen mit verschiedenen Funktionen

    Nun meine Frage : Ich würde gerne eine Listview erstellen und das Ergebniss in einem extra Fenster rechts öffnen lassen
    z.B ich /test/hier rechts dann als ergebniss ob /das / geht

    ich habe mal nen beispiel script gemacht um euch zu zeigen wie ich es ungefähr meine

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 800, 650, 193, 125)
    $Tab1 = GUICtrlCreateTab(500, 50 , 200, 500)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    GUICtrlCreateTabItem("")
    $Label1 = GUICtrlCreateLabel("Ich teste hier mal was", 302, 8, 106, 17)

    GUICtrlSetBkColor(-1, 0xFFFBF0)
    GUISetState(@SW_SHOW)
    $listview = GUICtrlCreateListView("test1|test2|test3", 10, 50, 400, 500)
    GUICtrlCreateListViewItem('hallo|ich|teste', $ListView)
    GUICtrlCreateListViewItem('ich|teste|hier', $ListView)
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    #EndRegion ### END Koda GUI section ###

    Könnte mir wer eventuell ein beispiel machen damit ich das verstehe?

    Danke im Voraus Areneas

    Einmal editiert, zuletzt von Areneas (16. August 2010 um 21:45)

  • ich beschreib es mal so

    In der Listview steht jetzt zB Start / Ziel / Zeit
    Blumenstraße/Schillerstraße/ 30min
    dann sollte er wenn ich auf die Spalte drücke rechts dann anzeigen als text wie z.B Preis des Sprits ca:15€/ Route Blumenstraße 30m links in die Rosenstraße usw

    hoffe dieses Beispiel ist verständlicher

    Ps: eventuell Bildilich besser zu erklären
    http://img14.imageshack.us/i/testfu.png/ [Blockierte Grafik: http://img14.imageshack.us/i/testfu.png/]

    2 Mal editiert, zuletzt von Areneas (7. August 2010 um 01:03)

  • besteht die möglichkeit dieses als labels zu erstellen und den wert dann aus einer ini lesen? dann wäre meine frage wäre das extra fenster dann eine groupbox?

  • Hallo Areneas,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    besteht die möglichkeit dieses als labels zu erstellen und den wert dann aus einer ini lesen?

    ja, aber wie kommen die Daten in die ini, wer oder welches System gibt sie ein?

    dann wäre meine frage wäre das extra fenster dann eine groupbox?

    nein,

    Zitat von Hilfe

    GUICreate

    Erstellt ein GUI-Fenster.

    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

    mfg (Auto)Bert

  • Guten Morgen Auto Bert,

    IniWrite ( "filename", "section", "key", "value" )
    das wäre dann eine einfache text datei mit dem editor die es schreiben würde und mit
    IniRead ( "filename", "section", "key", "default" ) könnte ich sie dann auslesen

    Nur bei dem extra fenster was es mir ja ausgeben soll beim klicken der Listview stehe ich aufn Schlauch, ich könnte mir sonst nur vorstellen das es eventuell eine editbox sein könnte...

    Ps: die hilfe zum runterladen funktioniert bei mir irgendwie nichts also ich kann keine themen suchen geschweige öffnen

  • Hallo Areneas,

    vielleicht sucht du ja den Begriff TabItem, solche würden zu deinem Skript passen. Einfach einmal

    [autoit]

    GUICtrlCreateTabItem("1. Tab")
    GUICtrlCreateLabel("Ich bin ein Label auf Tab 1",520,20)
    GUICtrlCreateTabItem("2. Tab")
    GUICtrlCreateLabel("Ich bin ein Label auf Tab 2",520,20)

    [/autoit]

    zwischen Zeile 9 und 10 aus Post #1 einfügen, dann siehst du ja gleich ob du dass meinst.
    Es wäre hilfreich wenn du dein Projektvorhaben etwas genauer beschreiben könntest. Nach deinem 2. Post bin ich der Meinung es soll ein Navigationssystem mit zusätzlichen Angaben z.B. Spritkostenberechnung werden. Das dürfte aber für das 1. Projekt etwas zu schwierig sein.

    Hier noch eine Listview-Beispiel zum testen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <File.au3>

    [/autoit]

    ;#include <array.au3>

    Local $tZeit, $s1, $s2

    $main = GUICreate("Test Drag & Drop from LV1 to LV2 DblClick in LV1 with ContextMenu in LV1 (copies to ClipBoard", 600, 400)
    $listview = GUICtrlCreateListView("Gruppe1| BlubText", 10, 10, 200, 100, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE))
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) ; legt fest, dass Hintergrundfarbe wechselt
    GUICtrlSetBkColor(-1, 0xE6E6FA) ; Hintergrundfarbe 1


    $listview2 = GUICtrlCreateListView("Gruppe2 | BlubText", 230, 10, 200, 100, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE))
    GUICtrlSetState($listview2, $GUI_DROPACCEPTED)
    $hbtnInfo = GUICtrlCreateButton("Info (LV1)", 10, 120, 100, 20)
    $hbtnSave = GUICtrlCreateButton("&Speichern (LV2)", 230, 120, 100, 20)
    $hbtnLoad = GUICtrlCreateButton("&Laden (LV2)", 230, 150, 100, 20)

    For $i = 1 To 9
    $listitem = GUICtrlCreateListViewItem("test" & $i & " |Blub " & Random(1, 9), $listview)
    If $i = 5 Then GUICtrlSetFont($listitem, 14, 800)
    GUICtrlSetBkColor(-1, 0xcccccc) ; Hintergrundfarbe 2
    Next
    $hEdit =GUICtrlCreateEdit("",5,180,390,200)
    $idContextmenu = GUICtrlCreateContextMenu($listview)
    $idClipmenu = GUICtrlCreateMenuItem("Selektierte ins ClipBoard", $idContextmenu)
    $idAllClipmenu = GUICtrlCreateMenuItem("Alle aus Splate 2 ins ClipBoard", $idContextmenu)
    $idDragmenu = GUICtrlCreateMenuItem("In LV 2", $idContextmenu)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick
    GUISetState()
    $first = True
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_DROPPED, $idDragmenu
    $ar = _GUICtrlListView_GetSelectedIndices($listview, True)
    ;_ArrayDisplay($ar)
    For $i = 1 To $ar[0]
    $sItem = _GUICtrlListView_GetItemTextString($listview, $ar[$i])
    GUICtrlCreateListViewItem($sItem, $listview2)
    Next
    Case $hbtnInfo
    $Wert = _GUICtrlListView_GetItemTextArray($listview)
    If $Wert[2] <> "" Then
    MsgBox(0, "Eintrag für " & $Wert[1], "ist: " & $Wert[2])
    Else
    MsgBox(0, "", "Kein Eintrag ausgewählt")
    EndIf
    Case $hbtnSave
    SaveLV(@ScriptDir & "\LV2.DAT")
    Case $hbtnLoad
    LoadLV(@ScriptDir & "\LV2.DAT")
    Case $idClipmenu
    $aItems = _GUICtrlListView_GetSelectedIndices($listview, True)
    $sItemText = ""
    For $i = 1 To $aItems[0]
    ;Schleifenbeginn 1 da $aItem[0] die Anzahl enhält
    $sItemText &= _GUICtrlListView_GetItemTextString($listview, $aItems[$i]) & @CRLF
    ;ConsoleWrite($sItemText & @CRLF)
    Next ;= > weiter mit For
    ClipPut($sItemText & @CRLF)
    MsgBox(0,"","Jetzt einfach einmal CRTL-V drücken")
    ControlFocus($main,"",$hedit)
    Case $idAllClipmenu
    $sToClip = ""
    For $i = 0 To _GUICtrlListView_GetItemCount($listview)
    $aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    $sToClip &= $aItem[2] & @CRLF
    Next
    ClipPut($sToClip)
    MsgBox(0,"","Jetzt einfach einmal CRTL-v drücken")
    ControlFocus($main,"",$hedit)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    Func SaveLV($sFile)
    Local $hFileOut, $aItem
    $hFileOut = FileOpen($sFile, 2)
    For $j = 0 To _GUICtrlListView_GetItemCount($listview2) - 1
    $aItem = _GUICtrlListView_GetItemTextString($listview2, $j)
    FileWriteLine($hFileOut, $aItem)
    Next
    FileClose($hFileOut)
    EndFunc ;==>SaveLV

    Func LoadLV($sFile)
    Local $aItems
    If FileExists($sFile) Then
    _FileReadToArray($sFile, $aItems)
    If IsArray($aItems) Then
    _GUICtrlListView_DeleteAllItems($listview2)
    ;_ArrayDisplay($aItems)
    For $j = 1 To $aItems[0]
    GUICtrlCreateListViewItem($aItems[$j], $listview2)
    Next
    EndIf
    EndIf
    EndFunc ;==>LoadLV


    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $listview Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    ;case -2 ;Klick
    Case -3 ;Doppelklick
    If _GUICtrlListView_GetSelectedCount($listview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($listview)
    If _GUICtrlListView_GetItemSelected($listview, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    MsgBox(0, "Doppel-Klick auf ", $aItem[1] & @CRLF & @CRLF & $aItem[2])
    EndIf
    Next
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [autoit][/autoit]

    mfg (Auto)Bert

  • Hallo AutoBert
    besteht die möglichkeit bei deinem Listviewbeispiel auch die beiden Taps untereinander zu machen?
    Wie gesagt da ich noch Anfänger bin,bin ich noch immer in der testphase mein erstes Projekt sollte in richtung Taxiunternehmendatenbank gehen.
    Es werden ca 135 Listviewitems auftauchen (verschiedene Start und Ziel Punkte) durchs klicken auf die items möchte ich halt die erwähnten ergebnisse dann dort aufgelistet haben. Dies datenbank sollte halt ein teil des tools werden von daher wollte ich da schon mal mit testen

    Hoffe es ist jetzt besser zu verstehen

    lg Areneas

  • entschuldige bitte hatte noch dein erstes beispiel im kopf mit den tabs. besteht denn die möglichkeit die gruppe 2 und den blub text untereinader zu machen im editcontrol und durchs klicken auf das listview item dort den wert auszugeben?