1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Ilse

Beiträge von Ilse

  • Click im Fenster

    • Ilse
    • 25. Oktober 2011 um 13:42

    Hallo,

    ich habe folgendes Problem:

    Ich möchte in einem Fenster einen Klick ausführen.
    Der Klick sollte aber "Fenster-bezogen sein".

    Also auch wenn sich die Größe des Fensters ändert.

    Wie kann man das machen?

    Beispiel

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

    #region --- Au3Recorder generated code Start ---
    _WinWaitActivate("SciTE [3 of 3]","Match &whole word on")
    MouseClick("left",169,50,1)
    Send("{ESC}")

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

    #region --- Internal functions Au3Recorder Start ---
    Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
    EndFunc
    #endregion --- Internal functions Au3Recorder End ---

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

    #endregion --- Au3Recorder generated code End ---
    #endregion --- Au3Recorder generated code End ---

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

    Güße
    Ilse ;)

  • Listview mit Combobox (Oscar Datenbank)

    • Ilse
    • 19. Oktober 2011 um 13:55

    Hallo Autobert,

    merci, habe alle Dateien heruntergeladen.
    Kann aber nichts ausführen:

    Spoiler anzeigen


    ERROR: $HDN_FIRST previously declared as a 'Const'

    Ich würde so gern mit Oscar's Datenbank arbeiten.
    Beim Eintrag bearbeiten geht doch eine GUI auf mit drei Textfeldern.

    Kann man da das nicht irgendwie ändern?
    Würde mich freuen wenn du mal reinschauen könntest?

    Liebe Grüße
    Ilse ;)

  • Listview mit Combobox (Oscar Datenbank)

    • Ilse
    • 19. Oktober 2011 um 12:14

    Hallo,

    wie kann man in einer Listview ein Feld als Combobox deklarieren.
    Das Feld Status sollte eine Combobox sein

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "PDF|Info|Status" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\Scan.csv" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert
    Global $subItem = 1
    #region Hauptfenster
    Global $hGui = GUICreate("Test", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "PDF", 0, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Info", 400, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Status", 150, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "PDF", 0, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Info", 400, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Status", 150, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

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

    Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
    $aCursor = GUIGetCursorInfo($hGui)
    If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
    $index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
    If $index <> "" Then
    ; == den inhalt auslesen und weiterverarbeiten
    $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, 0)
    ;MsgBox(0, 'Test', $inhalt)
    ShellExecute($inhalt)
    EndIf
    EndIf

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

    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    Die Combobox Status sollte so aussehen

    [autoit]


    $tun = GUICtrlCreateCombo("erledigen", 568, 88, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "anrufen|schreiben|erledigt")

    [/autoit]

    Die csv sieht so aus

    Spoiler anzeigen


    Tierheim.pdf|Tel. 089....|anrufen ;hier sollte man auswählen können!

    Geht das Listview mit Combobox?

    Falls nicht, kann man irgendwie die Combobox bei Eintrag bearbeiten einfügen!


    Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 19:15

    Hallo Oscar,

    schön daß du dich wieder meldest!

    Folgendes passiert noch:

    Wenn man filtert und dann auf bearbeiten klickt
    und dann auf das Feld.... dann wird die pdf geöffnet.

    Der Ablauf wäre:
    Ich suche / filtere, bearbeite und schließe.

    Ohne den Filter funktioniert es!


    Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 17:56

    Hallo Oscar,

    ich habe leider noch einen Fehler entdeckt!

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "PDF|Info" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\Scan.csv" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert
    Global $subItem = 1
    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "PDF", 0, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Info", 200, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "PDF", 70, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Info", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    ;~ _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

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

    Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
    $aCursor = GUIGetCursorInfo()
    If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
    $index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
    If $index > -1 Then
    ; == den inhalt auslesen und weiterverarbeiten
    $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, 0)
    ;MsgBox(0, 'Test', $inhalt)
    ShellExecute($inhalt)
    EndIf
    EndIf

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

    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    Wenn ich einen Eintrag markiere, und dann auf Bearbeitung
    klicke offnet sich das Fenster. OK
    Klicke ich dann auf den Entrag erhalte ich einen Array-Fehler bzw, Absturz!

    [autoit]


    (84) : ==> Subscript used with non-Array variable.:
    If $aCursor[4] = $hSearchListView Then

    [/autoit]

    Habe versucht die Werte zu #ndern, ohne Erfolg!
    Ich kann also achträglich nicht mehr bearbeiten.
    Alles andere funktioniert!

    Könntest du bitte nochmal drüberschaun?

    Liebe Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 16:10

    Hallo Oscar,

    1000 Dank, das war's!

    SUPER!!!

    Liebe Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 15:15

    Hallo TheLuBu,

    hab ich gemacht

    Debug Zeile 89

    [autoit]


    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) = ' & $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]

    run und ShellExecute kenn ich,
    aber was hier im Debug steht ist ein paar Nummern zu groß für mich.
    ...habe $subItem=1 versucht zu ändern, ....war's aber auch nicht!

    Brauche wirklich noch Hilfe

    Mit Scite Debug habe ich noch nie gearbeitet

    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 14:41

    Hallo TheLuBu,

    ja es ist die erste Spalte.
    Die Fehler sind jetzt weg,
    aber es passiert nichts!

    Hier der Code

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "Artikelnummer|Art|Nummer|Baureihe|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\Scan.csv" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert
    Global $subItem = 1
    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Artikelnummer", 120, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Art", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Artikelnummer", 120, 1) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Art", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Nummer", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Baureihe", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

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

    Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
    $aCursor = GUIGetCursorInfo()
    If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
    $index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
    If $index > -1 Then
    ; == den inhalt auslesen und weiterverarbeiten
    $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) ; $subItem - die Spalte, deren Wert du willst (0, 1 ...)
    EndIf
    EndIf

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

    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    die Datei heist scan.csv
    wurde im Script angepasst.
    sieht so aus:

    Spoiler anzeigen


    Datei-213123.pdf|info
    Datei-213125.pdf|info 2

    Ich starte den Filter, klicke auf die pdf Datei
    aber nichts passiert!
    Die pdf ist auch im Scriptdir!

    Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 14:10

    Hallo Bugfix,

    die Fehlermeldung sagt, Variable ist nicht global deklariert! OK!

    Zitat


    warum tust du es nicht, wenn die Fehlermeldung dir sagt

    das habe ich doch am Anfang gemacht:

    [autoit]


    Global $sHeader = "Produkt|Gebote|Preis|Restzeit|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert

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

    ;das habe ich angepasst!

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

    Global $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem)

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

    aber die Meldung ist immer noch da!
    dann habe ich die Listview verglichen
    die ist doch ok, oder?

    komme irgendwie nicht weiter!

    uff....

    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 13:21

    Hallo Bugfix,

    ...verstehe noch nicht so ganz was angepasst werden muß
    huh...
    Die Meldungen

    [autoit]


    $inhalt.....WARNING: $subItem: possibly used before declaration
    $inhalt....ERROR: $subItem: undeclared global variable.

    [/autoit]

    Habe
    Global $inhalt versucht am Anfag des Codes einzufügen
    den Fehler erhalte ich immer noch.

    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 12:47

    Hallo Bugfix,

    hm.., ich habe das eingefügt
    erhalte aber Fehler.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "Produkt|Gebote|Preis|Restzeit|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert

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

    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    #region Ebaysuche einlesen
    $sSource= BinaryToString(inetread("http://shop.ebay.de/i.html?rt=nc&LH_Auction=1&_nkw=Cd+Player&_trksid=p3286.c0.m301"))

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

    ;Land
    ;<b></b>Deutschland</a>
    ;$aLand = StringRegExp($sSource,'<b></b>(.*?)</a>',3)
    ;Link
    ;<a class="vip" href="http://cgi.ebay.de/Portable-CD-Player-GRUNDIG-CDP-440-/120739691074?pt=DE_Elektronik_Computer_Audio_Hi_Fi_CD_Player&amp;hash=item1c1ca57a42">Portable CD-Player GRUNDIG CDP 440</a>
    $aProdukt = StringRegExp($sSource,'"vip">(.*?)<',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aProdukt, "Array Auswertung")
    $aGebote = StringRegExp($sSource,'<td\sclass="bids\sbin1">(\d+\s\w+)</td>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aGebote, "Array Auswertung")
    $aPreis = StringRegExp($sSource,'<div\sclass="g-b">(.*?)</div>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aPreis, "Array Auswertung")
    $aRestzeit = StringRegExp($sSource,'class="hidlb">.*?<span.*?([^<">]+)</span>',3) ;class="hidlb">.*?<span.*?([^<">]+)</span>

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

    for $i = 0 to UBound($aRestzeit) -1
    ;$ersetze = StringRegExpReplace($aRestzeit[$i],"[160;]","test")
    $d = $aProdukt[$i]&"|"&$aGebote[$i]&"|"&$aPreis[$i]&"|"&$aRestzeit[$i]

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

    GUICtrlCreateListViewItem($d, $hListView)
    ;MsgBox(0,"","")

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

    next

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

    #endregion Ebaysuche einlesen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

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

    Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
    $aCursor = GUIGetCursorInfo()
    If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
    $index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
    If $index > -1 Then
    ; == den inhalt auslesen und weiterverarbeiten
    $inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) ; $subItem - die Spalte, deren Wert du willst (0, 1 ...)
    EndIf
    EndIf

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

    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    Event-Abfrage...also bei den Case Anweisungen?


    Grüße
    Ilse ;)

  • Datenbank Oscar (Listview)

    • Ilse
    • 18. Oktober 2011 um 12:15

    Hallo,

    ich hoffe daß Oscar das liest:

    Das ist die Datenbank

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "Produkt|Gebote|Preis|Restzeit|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert

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

    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    #region Ebaysuche einlesen
    $sSource= BinaryToString(inetread("http://shop.ebay.de/i.html?rt=nc&LH_Auction=1&_nkw=Cd+Player&_trksid=p3286.c0.m301"))

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

    ;Land
    ;<b></b>Deutschland</a>
    ;$aLand = StringRegExp($sSource,'<b></b>(.*?)</a>',3)
    ;Link
    ;<a class="vip" href="http://cgi.ebay.de/Portable-CD-Player-GRUNDIG-CDP-440-/120739691074?pt=DE_Elektronik_Computer_Audio_Hi_Fi_CD_Player&amp;hash=item1c1ca57a42">Portable CD-Player GRUNDIG CDP 440</a>
    $aProdukt = StringRegExp($sSource,'"vip">(.*?)<',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aProdukt, "Array Auswertung")
    $aGebote = StringRegExp($sSource,'<td\sclass="bids\sbin1">(\d+\s\w+)</td>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aGebote, "Array Auswertung")
    $aPreis = StringRegExp($sSource,'<div\sclass="g-b">(.*?)</div>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aPreis, "Array Auswertung")
    $aRestzeit = StringRegExp($sSource,'class="hidlb">.*?<span.*?([^<">]+)</span>',3) ;class="hidlb">.*?<span.*?([^<">]+)</span>

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

    for $i = 0 to UBound($aRestzeit) -1
    ;$ersetze = StringRegExpReplace($aRestzeit[$i],"[160;]","test")
    $d = $aProdukt[$i]&"|"&$aGebote[$i]&"|"&$aPreis[$i]&"|"&$aRestzeit[$i]

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

    GUICtrlCreateListViewItem($d, $hListView)
    ;MsgBox(0,"","")
    next

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

    #endregion Ebaysuche einlesen

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

    [/autoit]

    In der ersten ListviewZelle (Produkt) stehen Dateinamen drin
    Also: Datei-123456.pdf

    Mein Problen:
    Wie kann man nach dem filtern mit einem Doppelklick
    die Datei die in der ersten Zelle steht starten?

    Also, ich suche 123456 und starte dann die Datei-123456.pdf mit einem Klick

    Geht das?

    Liebe Grüße
    Ilse ;)

  • Auto ID erzeugen

    • Ilse
    • 18. Oktober 2011 um 12:05

    ok,

    ich hab's

    $id2 = StringTrimLeft (@YEAR, 2) & @MON

    Danke

    Ilse ;)

  • Auto ID erzeugen

    • Ilse
    • 18. Oktober 2011 um 10:30

    Hallo Bugfix,

    habe noch ein Problem:

    [autoit]


    $id2 = StringTrimLeft(@YEAR), 2) & @MON & @MDAY & @HOUR & @MIN &StringRight('00' & $iCounter, 3) ; == somit ist der Counter immer 3-stellig

    [/autoit]

    Das mit StringTrimLeft klappt nicht!
    Bekomme Fehlermeldung
    called with wrong number of args

    ...und danke auch an James!

    Grüße
    Ilse ;)

  • Auto ID erzeugen

    • Ilse
    • 17. Oktober 2011 um 11:09

    Hallo Bugfix,

    dank dir für deine Tipps!
    Klappt Super.

    Liebe Grüße
    Ilse ;)

  • Auto ID erzeugen

    • Ilse
    • 17. Oktober 2011 um 10:08

    Hallo,

    ich möchte gerne eine eindeutige ID für meine
    Scan-Dokumente erzeugen.
    Das Problem:
    die ID darf nur einmal existieren und sollte ziemlich kurz sein!

    Beispel mit Datum:

    Datei-171011-1.pdf
    Datei-171011-2.pdf

    Hier mal mein Code

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1_1 = GUICreate("Form1", 429, 146, 274, 224)
    $Nummer = GUICtrlCreateButton("Nummer erzeugen", 96, 8, 307, 41)
    $Dateiname = GUICtrlCreateInput("Dateiname", 96, 56, 217, 28)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label1 = GUICtrlCreateLabel("Dateiname", 16, 64, 70, 20)
    $ID = GUICtrlCreateInput("", 96, 104, 305, 28)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("ID", 64, 112, 17, 20)
    $suffix = GUICtrlCreateInput(".pdf", 320, 64, 81, 24)
    GUISetState(@SW_SHOW)

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

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

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

    Case $Nummer
    $Org = GUICtrlRead($Dateiname)
    $pre = GUICtrlRead($suffix)
    GUICtrlSetData($ID, $Org&"-"&$pre)

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

    EndSwitch
    WEnd

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


    Habt Ihr eine Idee wie man da das Datum
    einbauen kann + fortlaufende ID ?


    Liebe Grüße
    Ilse ;)

  • Regex Problem

    • Ilse
    • 28. September 2011 um 14:25

    Hallo Chip,

    super, genau so hatte ich mir das vorgestellt.
    Eine Frage noch:
    Kann man mittels API auch den Soundlink starten?
    Also nicht mit _ieAction, oder MouseClick...

    ;) Ilse

  • Regex Problem

    • Ilse
    • 28. September 2011 um 13:51

    Hallo Chip,

    einfach zum verstehen:
    D.h. ich rufe immer diese LINKS auf,
    und lese dann mit Inetget die Felder aus?

    Macht man das so?

    Tappe noch etwas im dunkeln!!!

    ;) Ilse

  • Regex Problem

    • Ilse
    • 28. September 2011 um 13:09

    Hallo Chip,

    ich habe das mit der api gefunden!
    Wie das allerdings mit Autoit geht...???

    Hier mal der Link

    [autoit]


    http://code.google.com/p/google-api-translate-java/

    [/autoit]

    Gibt es vielleicht ein Autoit Tutorial für API?

    ;) Ilse

  • Regex Problem

    • Ilse
    • 28. September 2011 um 12:14

    Hallo Chip,

    ich versuche das mit den _ieFunktionen mal.
    Hatte ich mir auch schon überlegt.

    Grüße
    Ilse ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™