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. Oscar

Beiträge von Oscar

  • StringReplace keine Änderung

    • Oscar
    • 29. Juni 2011 um 12:13

    Es wäre viel hilfreicher, wenn Du so eine Textdatei mal als Anhang mitposten würdest.
    Sonst kann man nämlich schlecht nachvollziehen, wo der Fehler steckt. ;)

  • GUI innerhalb einer Func beenden

    • Oscar
    • 29. Juni 2011 um 08:09

    Eine Funktion kannst Du mit "Return" vorzeitig verlassen.

  • Herzlichen Glückwunsch Schnuffel

    • Oscar
    • 28. Juni 2011 um 07:46

    Herzlichen Glückwunsch zum Geburtstag, Schnuffel!

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Listview Sortierung (geht/geht nicht)

    • Oscar
    • 23. Juni 2011 um 13:54

    Das ist auch kein Problem. Nur ein paar kleine Änderungen. Hab's oben bearbeitet.

  • Unterschiede bei der Anzeige eines Compilierten Scriptes in Windows XP

    • Oscar
    • 23. Juni 2011 um 13:49

    $BS_ICON funktioniert im klassischen Style nicht.
    Da Du aber sowieso keine Icons in den Buttons verwendest, kannst Du das doch auch weglassen.

  • Listview Sortierung (geht/geht nicht)

    • Oscar
    • 23. Juni 2011 um 13:44

    Schön, dass Dir das Beispiel gefällt. Ich habe meinen Post nochmal bearbeitet: Kommentare hinzugefügt und Hintergrundfarbe ändern anhand der Suchtreffer.

    P.S.: Falls das Thema gelöst ist, bitte entsprechend Post #1 bearbeiten und Präfix auf "gelöst" setzen.

  • Listview Sortierung (geht/geht nicht)

    • Oscar
    • 23. Juni 2011 um 12:41

    Das wurde schonmal gefragt, deshalb hatte ich mein Listview-Datenbank-Beispiel dahingehend erweitert:

    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 & "\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, "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) ; Suchbegriff-Input erstellen
    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) ; Reset-Button erstellen
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE) ; den Reset-Button deaktivieren

    [/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
    _GUICtrlListView_RegisterSortCallBack($hSearchLVHandle) ; damit man das Suche-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 $hSearchListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hSearchLVHandle, GUICtrlGetState($hSearchListView)) ; Einträge entsprechend sortieren
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $hSearchStart ; Benutzer hat auf "Suche..." geklickt
    GUICtrlSetState($hSearchStart, $GUI_DISABLE) ; Button deaktivieren
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle) ; alle Einträge aus dem Suche-Listview entfernen
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; In einer Schleife alle Listview-Einträge durchsuchen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die entsprechende Zeile auslesen
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView) ; und falls das Suchwort darin vorkommt, einen neuen Eintrag im Suche-Listview erstellen
    Next
    If _GUICtrlListView_GetItemCount($hSearchLVHandle) = 0 Then ; wenn kein Suchtreffer, dann...
    GUICtrlSetBkColor($hSearchListView, 0xFF8888) ; Hintergrundfarbe in Rot ändern
    Else
    GUICtrlSetBkColor($hSearchListView, 0x88FF88) ; ansonsten Hintergrundfarbe in grün ändern
    EndIf
    GUICtrlSetState($hListView, $GUI_HIDE) ; das normale Listview verstecken
    GUICtrlSetState($hSearchListView, $GUI_SHOW) ; und das Suche-Listview anzeigen
    GUICtrlSetState($hSearchReset, $GUI_ENABLE) ; den Reset-Button aktivieren, damit der Benutzer wieder auf das normale Listview umschalten kann
    Case $hSearchReset ; Benutzer hat auf den Reset-Button geklickt
    GUICtrlSetData($hSearch, "") ; das Suchbegriff-Input leeren
    GUICtrlSetState($hSearchListView, $GUI_HIDE) ; das Suche-Listview verstecken
    GUICtrlSetState($hListView, $GUI_SHOW) ; das normale Listview wieder anzeigen
    GUICtrlSetState($hSearchStart, $GUI_ENABLE) ; den "Suche..."-Button wieder aktivieren
    GUICtrlSetState($hSearchReset, $GUI_DISABLE) ; und den Reset-Button deaktivieren
    Case $hNew, $hCMNew ; Benutzer 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 ; Benutzer hat auf "Laden" geklickt
    Load()
    Case $hSave ; Benutzer hat auf "Speichern" geklickt
    Save()
    Case $hDel, $hCMDel ; Benutzer 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 ; Benutzer hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; Benutzer hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; Benutzer 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 ; Benutzer 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($hSearchLVHandle) ; Sortierroutine wieder de-registrieren
    _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]


    Dort kannst Du einen Suchbegriff eingeben und das Ergebnis wird im zweiten (vorher versteckten) Listview angezeigt.

    Edit: Skript mit weiteren Kommentaren versehen und eine Änderung der Hintergrundfarbe (grün = Suchtreffer vorhanden, rot = kein Suchtreffer) eingebaut.

    Edit2: Sortierung für das Suche-Listview hinzugefügt.

  • Listview Sortierung (geht/geht nicht)

    • Oscar
    • 23. Juni 2011 um 11:56

    Du kannst es auch vor dem sortieren ersetzen lassen und hinterher wieder zurücksetzen:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>

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

    Const $programm = 'Test'

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

    Local $aLi

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

    GUICreate($programm, 500, 500)
    $GuiBut_beenden = GUICtrlCreateButton('Beenden', 5, 5)
    ;$GuiList = GUICtrlCreateListView('Datei|Zuletzt Bearbeitet|Größe', 80, 20, 400, 200, 0x0001, BitOR(0x00000001, 0x00000020, 0x00010000))
    $ListView1 = GUICtrlCreateListView("Nr|Spalte1|Spalte2|Spalte3", 24, 72, 400, 400)

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

    GUISetState(@SW_SHOW)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 40)
    _GUICtrlListView_SetColumnWidth($ListView1, 1, 75)
    _GUICtrlListView_SetColumnWidth($ListView1, 2, 75)
    _GUICtrlListView_SetColumnWidth($ListView1, 3, 75)

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

    ;GUICtrlCreateListViewItem('A|qwer|zuio', $ListView1)
    ;GUICtrlCreateListViewItem('B|asdf|hjkl', $ListView1)
    ;GUICtrlCreateListViewItem('C|yxcv|vbnm', $ListView1)
    ;_GUICtrlListView_SimpleSort($ListView1, $B_DESCENDING, 3)
    #endregion ### END Koda GUI section ###
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)

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

    For $i = 1 To 30
    $aLi = $i & ",20" & '|' & '|' & '|'
    GUICtrlCreateListViewItem($aLi, $ListView1)
    Next

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

    GUISetState()
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Do
    $aktion = GUIGetMsg()
    Switch $aktion
    Case $ListView1
    _SwitchKomma($ListView1, ',', '.')
    _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($ListView1))
    _SwitchKomma($ListView1, '.', ',')
    Case $GuiBut_beenden
    ContinueCase
    Case -3
    _GUICtrlListView_UnRegisterSortCallBack($hWndListView)
    Exit
    EndSwitch
    Until 0

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

    Func _SwitchKomma($hListView, $sSearch, $sReplace)
    _GUICtrlListView_BeginUpdate($hListView)
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
    _GUICtrlListView_SetItemText($hListView, $i, StringReplace(_GUICtrlListView_GetItemText($hListView, $i), $sSearch, $sReplace))
    Next
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>_SwitchKomma

    [/autoit]
  • Alina feiert heute ;)

    • Oscar
    • 19. Juni 2011 um 22:58

    Zu später Stunde, aber noch rechtzeitig: Alles Liebe und Gute zum Geburtstag!
    Bleib uns auch in diesem Lebensjahr erhalten. :thumbup:

  • GuiCtrlSetState will nicht

    • Oscar
    • 10. Juni 2011 um 22:41

    Du musst auch die Breite des Labels anpassen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[19][2] = [[18,0],[1, 'Petra-Müller'],[2, 'Klaus Schmidt'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf
    _ArrayDelete($var, 0)
    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Links = 50
    Dim $Oben = 20
    Dim $Zwischen = 25
    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 20, 20)
    GUICtrlSetFont(-1, 12, 500, 0, "Arial") ; hier habe ich die Schriftgröße geändert
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 110, 20) ; <- hier die Breite (60) und Höhe (20) angeben.
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    GUICtrlSetFont(-1, 12, 500, 0, "Arial") ; hier habe ich die Schriftgröße geändert
    $arProgress[$i] = GUICtrlCreateProgress($Links + 130 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 20)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit]
  • GuiCtrlSetState will nicht

    • Oscar
    • 10. Juni 2011 um 15:53

    Du musst die Variable $Abstand vergrößern, sodass die Progressbar weiter weg vom Label ist.
    Außerdem ist es wohl ganz hilfreich beim Label die Breite und Höhe anzugeben (anpassen, siehe Kommentar).

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[19][2] = [[18,0],[1, 'Petra'],[2, 'Klaus'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf
    _ArrayDelete($var, 0)
    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Links = 50
    Dim $Oben = 20
    Dim $Zwischen = 25
    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 20, 20)
    GUICtrlSetFont(-1, 12, 500, 0, "Arial") ; hier habe ich die Schriftgröße geändert
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 60, 20) ; <- hier die Breite (60) und Höhe (20) angeben.
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    GUICtrlSetFont(-1, 12, 500, 0, "Arial") ; hier habe ich die Schriftgröße geändert
    $arProgress[$i] = GUICtrlCreateProgress($Links + 80 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 20)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Wo liegt der Fehler?

    • Oscar
    • 10. Juni 2011 um 05:01

    Die Anführungszeichen kennzeichnen den Anfang von einem String. Es fehlt also ein weiteres Anführungszeichen dahinter.
    Wenn Du das Anführungszeichen selbst speichern willst, benutze die einfachen Anführungszeichen zum einschließen:

    [autoit]

    FileWrite($file, "start" & $Input3 & '"')

    [/autoit]


    oder schreibe den ASCII-Code:

    [autoit]

    FileWrite($file, "start" & $Input3 & Chr(34))

    [/autoit]
  • Hilfe bei Programm zum Daten auslesen aus Excel (.csv) und Ausgabe in AutoIt

    • Oscar
    • 9. Juni 2011 um 19:56

    Da das ListView-Datenbank-Beispiel von mir ist, habe ich das Beispiel mal um eine Suchfunktion erweitert:

    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 & "\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, "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
    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]
  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 15:15

    Ich hab's mal in Variablen gepackt:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[19][2] = [[18,0],[1, 'Petra'],[2, 'Klaus'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf
    _ArrayDelete($var, 0)
    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Links = 50
    Dim $Oben = 20
    Dim $Zwischen = 25
    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress($Links + 80 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit]
  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 14:56

    Ahh! IniReadSection gibt in $var[0][0] die Anzahl der Elemente zurück.
    Füge einfach:

    [autoit]

    _ArrayDelete($var, 0)

    [/autoit]


    nach IniReadSection ein.

    Und am Anfang:

    [autoit]

    #include <Array.au3>

    [/autoit]


    nicht vergessen. ;)

  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 14:37

    Achso!
    Die Anzahl der Spalten ist abhängig von der Anzahl der benutzten Zeilen.
    Ich habe das Beispiel mal etwas geändert, damit Du die Anzahl der Zeilen entsprechend anpassen kannst (siehe Kommentare):

    Spoiler anzeigen
    [autoit]


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

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[18][2] = [[1, 'Petra'],[2, 'Klaus'],[3, 'Lissi'],[4, 'Norbert'],[5, 'Paul'],[6, 'Carla'],[7, 'Fritz'],[8, 'Tanja'],[9, 'Bert'], _
    [10, 'Rosi'],[11, 'Peter'],[12, 'Lena'],[13, 'Ralf'],[14, 'Theo'],[15, 'Zora'],[16, 'Birgit'],[17, 'Sandra'],[18, 'Tom']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Dim $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    Dim $Zeilen = 8 ; <- hier die Anzahl der Zeilen eintragen
    Dim $Abstand = 220 ; <- hier den Abstand zwischen den Spalten eintragen

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', 70 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], 90 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress(150 + Int($i / $Zeilen) * $Abstand, 50 + Mod($i, $Zeilen) * 25, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc ;==>_SelectAll

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc ;==>_CheckboxSelect

    [/autoit]
  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 14:16

    Was funktioniert denn nicht?
    Kannst Du mal so eine Ini posten?

  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 13:59

    Checkboxen lassen sich nicht transparent darstellen. Da muss man etwas tricksen (leere Checkbox und ein Label dahinter). Damit man aber trotzdem auf das Label klicken kann (zum Haken setzen), ist der OnEventMode besser geeignet.
    Damit man die Progressbars sieht solltest Du GUISetState erst benutzen nachdem alle GUI-Elemente erstellt wurden. Anderenfalls musst Du sie einzeln nach vorn holen.
    Für mehrere Spalten braucht man die Position lediglich errechnen, dann funktioniert es auch in einer Schleife. Hier mal ein Beispiel, wo das beschriebene eingebaut ist:

    Spoiler anzeigen
    [autoit]


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

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

    Opt("GUIOnEventMode", 1)

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_End")
    $Pic1 = GUICtrlCreatePic("C:\Users\Ilse\Desktop\Backbild.jpg", -4, -4, 805, 629)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    GUICtrlSetOnEvent(-1, "_SelectAll")
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)

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

    Dim $var[8][2] = [[1, 'Petra'], [2, 'Klaus'], [3, 'Lissi'], [4, 'Norbert'], [5, 'Paul'], [6, 'Carla'], [7, 'Fritz'], [8, 'Tanja']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Local $arControl[UBound($var)][2], $arProgress[UBound($var)]

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

    For $i = 0 To UBound($arControl) - 1
    $arControl[$i][0] = GUICtrlCreateCheckbox('', 70 + Int($i/4) * 300, 50 + Mod($i, 4) * 25, 13, 13)
    $arControl[$i][1] = GUICtrlCreateLabel($var[$i][1], 90 + Int($i/4) * 300, 50 + Mod($i, 4) * 25)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent(-1, "_CheckboxSelect")
    $arProgress[$i] = GUICtrlCreateProgress(170 + Int($i/4) * 300, 50 + Mod($i, 4) * 25, 70, 14)
    Next
    GUISetState(@SW_SHOW)

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _SelectAll()
    For $i = 0 To UBound($arControl) - 1
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    Next
    EndFunc

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

    Func _CheckboxSelect()
    Local $ID = @GUI_CtrlId - 1
    If BitAND(GUICtrlRead($ID), $gui_checked) Then
    GUICtrlSetState($ID, $gui_unchecked)
    Else
    GUICtrlSetState($ID, $gui_checked)
    EndIf
    EndFunc

    [/autoit]

    P.S.: Verwende für Deinen Quelltext bitte Spoiler.

  • GuiCtrlSetState will nicht

    • Oscar
    • 9. Juni 2011 um 13:05

    Außerdem erstellst Du zu viele Checkboxen (mehr als in der Inidatei vorhanden). Das führt zu einem Abbruch des Skripts, weil das Array $var gar nicht so viele Einträge besitzt.
    Besser ist es, wenn Du beim erstellen UBound verwendest:

    Spoiler anzeigen
    [autoit]


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

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

    $Gui = GUICreate("Namen", 701, 571, 208, 178)
    $SelectAll = GUICtrlCreateButton("Select all", 568, 424, 75, 25)
    ;$Alle = GUICtrlCreateButton("Alle", 304, 232, 75, 25)
    GUISetState(@SW_SHOW)

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

    Dim $var[4][2] = [[1, 'Petra'], [2, 'Klaus'], [3, 'Lissi'], [4, 'Norbert']]

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

    ;~ $var = IniReadSection(@ScriptDir & '\meine.ini', "Titel")

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

    ;~ If @error Then
    ;~ MsgBox(4096, "", "Error occurred, probably no INI file.")
    ;~ EndIf

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

    ;Local $aktiv = True
    Local $arControl[UBound($var)][2]
    #region Ausrichtung Controls
    $Startoben = 50
    $Startlinks = 70
    $progbarLinks = 170
    $oben = $Startoben
    $ctrlLinks = $Startlinks
    #endregion Ausrichtung Controls
    For $i = 0 To UBound($arControl) - 1
    $oben += "25"
    $arControl[$i][0] = GUICtrlCreateCheckbox($var[$i][1], $ctrlLinks, $oben)
    $arControl[$i][1] = GUICtrlCreateProgress($progbarLinks, $oben, 70, 20)
    Next

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

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

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

    Case $SelectAll
    For $i = 0 To UBound($arControl) - 1
    ;$Test = Guictrlread($arControl[$i])
    GUICtrlSetState($arControl[$i][0], $gui_checked)
    ;MsgBox(0,$i,$arControl[$i])
    Next
    EndSwitch
    WEnd

    [/autoit]
  • dsktopauflösung ausgeben bei erweiterten desktop?

    • Oscar
    • 1. Juni 2011 um 13:11

    Versuch's mal damit:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <WinAPI.au3>
    $aRes = _GetDesktopResolution()
    _ArrayDisplay($aRes)

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

    Func _GetDesktopResolution()
    Local $aRes[4], $hWindow, $stRET
    $hWindow = _WinAPI_GetDesktopWindow()
    $stRET = _WinAPI_GetWindowPlacement($hWindow)
    If Not @error Then
    $aRes[0] = DllStructGetData($stRET, 'rcNormalPosition', 1) ; left
    $aRes[1] = DllStructGetData($stRET, 'rcNormalPosition', 2) ; top
    $aRes[2] = DllStructGetData($stRET, 'rcNormalPosition', 3) ; right
    $aRes[3] = DllStructGetData($stRET, 'rcNormalPosition', 4) ; bottom
    $stRET = 0
    Return $aRes
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc ;==>_GetDesktopResolution

    [/autoit]

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™