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

Beiträge von nuts

  • Das in Arrays umwandeln

    • nuts
    • 31. März 2009 um 12:14
    [autoit]


    Global $Button = StringSplit('1|4|7|.|2|5|8|0|3|6|9|=|+|-|*|/', '|', 2) ;hier werden die zeichen für deinen rechner definiert und per stringsplit aufgeteilt
    For $i = 0 To UBound($Button) - 1 ;jedes zeichen durchgehen und dafür ...
    $Button[$i] = GUICtrlCreateButton($Button[$i], 16 + Int($i / 4) * 32 + ($i > 11) * 8, 48 + Mod($i, 4) * 32, 25 + ($i > 11) * 16, 25) ; einen button erstellen und die nötigen variablen berechnen
    Next

    [/autoit]


    Vielleicht solltest du das zum Verständnis aufteilen, jeweils für $i einen wert einsetzen und dir das als msgbox mal anzeigen lassen?

    P.S. besonders viel Sinn scheint mir das nicht zu machen, cool ists aber trotzdem ;)
    Hab grad selbst versucht sowas für eine GUI zu erstellen und dafür muss man sich ganz schön das Gehirn verbiegen - mit Koda gehts doch einfacher :D

  • Meine _ExcelReadSheetToArray Lösung

    • nuts
    • 30. März 2009 um 19:02

    Funktioniert super bei mir und kann ich grad gut brauchen. :thumbup:

    _ExcelReadSheetToArray muss man umbenennen oder? Ist nämlich schon in der ExcelCOM_UDF.au3 definiert. Zumindest bekomme ich sonst eine enstsprechende Fehlermeldung.

  • Com Server - Grundsätzliche Fragen

    • nuts
    • 30. März 2009 um 18:19

    Schon klar ;)
    Ist ja nicht so das ich alle 2 Stunden auf eine Antwort poche.

    Aber ich sehe schon, dass dieses Thema wohl weniger mit Autoit behandelt wird.
    Vielleicht auch weil Autoit für objektorientierte Programmierung weniger geeignet ist?

    P.S. sollte dem so sein: gibt es geeignetere "Skriptsprachen" für solche Sachen? "Hochsprachen" wie Delphi oder C sind für mich Freizeitskripter zu kompliziert.

  • Com Server - Grundsätzliche Fragen

    • nuts
    • 30. März 2009 um 09:50

    Mhm keine Com Experten hier? :(

  • Com Server - Grundsätzliche Fragen

    • nuts
    • 29. März 2009 um 00:47

    Hey,

    ich benutze als TV Software den DVBViewer. Über dessen "Com Server" (kann man das so sagen? ich kann mir unter einem Com Server irgendwie überhaupt nichts vorstellen) kann man das Programm fernsteuern, OSD's anzeigen lassen usw.
    Das funktioniert auch super, hier mal ein Beispiel:

    [autoit]


    Global $DVBViewer = ObjGet ("", "DVBViewerServer.DVBViewer") ; Verbindung zum Com Server herstellen
    If $DVBViewer = 0 Then ;wenn der dvb viewer nicht erreichbar ist, dann ..
    MsgBox (1, "", "Keine Verbindung zum DVBViewer möglich")
    Exit
    Else
    $DVBViewer.SendCommand (12326) ; SendCommand = einer der definierten Methode -> in dem Fall wird der DVBViewer beendet
    EndIf

    [/autoit]

    Allerdings sendet der Com Server vom DVBViewer für bestimmte Ereignisse auch Events auf die man reagieren könnte.
    Hierzu fehlt mir aber leider etwas der Durchblick. Wie fange ich Events eines Com Servers ab? Muss dazu eine ständige Abfrage erfolgen ob etwas gesendet wird?

    Vielleicht hat auch jemand ein kurzes Beispiel wo auf Events eines Com Servers (muss ja nicht vom DVBViewer sein) reagiert wird?

    Gruß nuts

  • Bildwechsel (button)

    • nuts
    • 28. März 2009 um 21:17

    Eigentlich suchst du doch eine einfache Hoverfunktion oder?

    Hier im Forum schwirrt diese Variante rum (gefällt mir persönlich besser als die Hover UDF - ist halt leichter zu verstehen)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    global $hoverbild = ; dein hoverbild
    global $normalbild = ;dein normales bild
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 447, 193, 125)
    $Pic1 = GUICtrlCreatePic($normalbild, 104, 56, 217, 169, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $Hover_Old = ""

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

    While 1
    $Cursor = GUIGetCursorInfo($Form1) ;Einfache Hover Funktion
    If $Cursor[4] <> $Hover_Old Then
    Normal($Hover_Old)
    Hover($Cursor[4])
    $Hover_Old = $Cursor[4]
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Hover($ID)
    Switch $ID
    Case $Pic1
    GUICtrlSetImage($Pic1, $hoverbild)
    EndSwitch
    EndFunc

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

    Func Normal($ID)
    Switch $ID
    Case $Pic1
    GUICtrlSetImage($Pic1, $normalbild)
    EndSwitch
    EndFunc

    [/autoit]
  • MySetup

    • nuts
    • 28. März 2009 um 17:06

    Wow ist echt super gemacht, kann ich sicher mal brauchen!

  • Aus Dateipfad, Ordnerpfad machen

    • nuts
    • 28. März 2009 um 00:45
    [autoit]


    $path = "D:\TEMP\abc\xyz\Name1.jpg"
    $string = stringsplit($path, "\")
    $string2 = stringsplit($string[UBound($string)-1], ".")
    MsgBox(1, "", $string2[1])

    [/autoit]

    So gehts ohne #include.
    Keine Ahnung wie sinnvoll das ist - hab grad langeweile :D

  • Array "Umstrukutieren"

    • nuts
    • 27. März 2009 um 01:00

    Hehe danke jetzt läufts - Gelöst - :thumbup:

  • Array "Umstrukutieren"

    • nuts
    • 26. März 2009 um 21:44

    Hey,

    heute mittag hab ichs dringend gebraucht und hab mir einen Umweg übers Listview gebaut

    Spoiler anzeigen
    [autoit]


    #include<WindowsConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<Guilistview.au3>
    #include <File.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>
    #NoTrayIcon

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

    Opt("GUIDataSeparatorChar", ";")
    global $path
    global $array
    global $titel = "Semniarunterlagen"

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

    if _Singleton($titel,1) = 0 then
    MsgBox(0, "Achtung", "Anwendung läuft bereits!", 3)
    exit
    endif

    Global $sHeader = "Bezeichnung;Datum" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $HA = 750
    Global $VA = 1100

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

    HotKeySet("!+S" ,"Save")

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

    #Region Hauptfenster
    Global $bfarbe = 0xeeeeee
    $LVStyle = BitOR($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS )
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_DOUBLEBUFFER)
    Global $hGui = GUICreate($titel ,$VA, $HA) ; Hauptfenster erstellen
    GUISetBkColor ($bfarbe)

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

    ;;;;;Listview erstellen
    Global $hListView = GUICtrlCreateListView($sheader, 0, 0, 1100, 750, $LVStyle, $ExStyle) ; Listview erstellen
    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Bezeichnung", 970, 0) ; 1. Spalte = 360 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Datum", 120, 0)
    GUICtrlSetFont($hlistview, 12, 800, 0)

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

    ;;;;;;;;Hauptmenü
    Global $hMenu = GUICtrlCreateMenu("Menü") ;Erstellt das Menü für die HauptGUI
    Global $hcopen = GUICtrlCreateMenuItem("Öffnen", $hmenu)
    Global $hcspeichern = GUICtrlCreateMenuItem("Speichern", $hmenu)
    Global $hcExit = GUICtrlCreateMenuItem("Exit", $hmenu)

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

    #EndRegion Hauptfenster

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

    #Region Fenster für Dateiauswahl
    Global $hGUIdatei = GUICreate("Datei auswählen", 600, 200, 193, 125)
    GUISetBkColor(0xeeeeee)
    Global $bweiter = GUICtrlCreateButton("Weiter", 210, 100, 180, 50, 0)

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

    GUICtrlCreateGroup("Verzeichnis eingeben", 25, 30, 550, 51)
    Global $hInput = GUICtrlCreateInput("" , 35, 50, 500, 21, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
    Global $bopen = GUICtrlCreateButton("...", 535, 49, 30, 23)
    #EndRegion Fenster für Dateiauswahl

    [/autoit] [autoit][/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, $hguidatei) ; Hauptfenster sichtbar machen

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    case $bweiter
    Date()
    Load()
    GUISetState(@SW_HIDE, $hguidatei)
    GUISetState(@SW_Show, $hgui)
    Case $hListView
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView))
    case $bopen
    $path = FileOpenDialog("Bitte auswählen", @DesktopDir , "Text (*.csv)")
    GUICtrlSetData($hInput, $path)
    Case $hcopen
    $path = FileOpenDialog("Bitte auswählen", @DesktopDir , "Text (*.csv)")
    Date()
    Load()
    Case $hcspeichern
    Save()
    Case $GUI_EVENT_CLOSE, $hcExit
    Switch $nMsg[1]
    case $hgui
    End()
    case $hGUIdatei
    End()
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    EndFunc

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

    Func Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hLVHandle)
    Local $sItem
    Local $hFile = FileOpen($path, 0)
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem

    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    Local $hFile = FileOpen($path, 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
    msgbox(0, "Speichern", "Gesichert")
    EndFunc ;==>Save

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

    Func Date()
    _FilereadToArray($path, $array)
    fileopen($path,2)
    for $i = 1 to UBound($array) -1
    local $string = Stringsplit($array[$i], ";")
    local $stringdate = stringsplit($string[2],".")
    local $date = $stringdate[3] & "." & $stringdate[2] & "." & $stringdate[1]
    local $write = $string[1] & ";" & $date
    FileWriteLine($path, $write)
    next
    FileClose($path)
    EndFunc

    [/autoit]


    Gefällt mir ganz gut, scheint zu funktionieren und man kann sich vor dem Überschreiben das Ergebnis im Listview ansehen.

    Deine Variante probier ich aber auch gleich aus, danke für deine Mühen :thumbup:

    edit \ Deine Variante ändert aber irgendwie die "Datums" - muss ich jetzt nochmal genauer testen.

  • Array "Umstrukutieren"

    • nuts
    • 26. März 2009 um 15:34

    Danke, funktioniert so weit.

    Ich hätte wohl gleich richtig beschreiben sollen was ich eigentlich vor habe.

    Die Text-Datei kommt aus einer Excel-Tabelle (als .csv gespeichert) und beinhaltet ein bestimmtes Thema mit einem zugehörigen Datum.

    Code
    Thema; 25.01.2009
    Thema2; 26.02.2009
    Thema3; 15.12.2008
    Thema4; 03.01.2009


    Diese Themen will ich jetzt mit hilfe von Auto-it nach dem Datum sortieren.

    Ist aber gar nicht so einfach.

  • Array "Umstrukutieren"

    • nuts
    • 26. März 2009 um 12:06

    Hey,

    folgendes Problem:

    aus einer Textdatei erhalte ich ein 1D Array in folgendem Format:

    beispiel;100
    beispiel2; 200
    beispiel3; 300

    usw.

    Bestimmte Daten (die hinterm ;) wollte ich jetzt in ein neues 1D Array schicken, welches dann so aussehen soll:

    100
    200
    300

    usw.

    Ich dachte es funktioniert ganz simpel mit Stringsplit und _Arrayadd, allerdings hab ichs irgendwie doch nicht hinbekommen :( .
    Bei Bedarf poste ich noch meinen Versuch, bin allerdings gerade in der Mittagspause und komme erst heute nachmittag wieder ran.

    Gruß Nuts

  • MySetup

    • nuts
    • 25. März 2009 um 00:52

    Hey

    klingt interessant, funktioniert aber leider bei mir nicht.

    Zeile 9

    [autoit]

    $CFGlegal=FileRead($CFGlegal)

    [/autoit]

    ?(

    gruß nuts

  • Ne erste übungsUDF ^^

    • nuts
    • 23. März 2009 um 14:35

    Hey,

    mal ne blöde Frage: Kann ich eigene Funktionen im Include Ordner abspeichern und dann wie gewohnt einbinden?

  • Wenn aufs Bildgeklickt wird Funktion aufrufen

    • nuts
    • 11. März 2009 um 00:56

    zu2:
    Du suchst eine Hover Funktion. Dazu gibt verschiedene Möglichkeiten, diese hier gefällt mir ganz gut

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    Opt("GUICoordMode",1)
    $HauptGUI = GUICreate("Hover", 400, 560)
    $Button1 = GUICtrlCreateButton("Test", 100, 100, 200, 60, 0)
    $bild1 = GUICtrlCreatePic(@SystemDir & "\oobe\images\mslogo.jpg", 100, 250, 200, 50)
    GuiSetState()

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

    $Hover_Old = ""

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

    While 1

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

    If GUIGetMsg() = -3 Then Exit

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

    $Cursor = GUIGetCursorInfo($HauptGUI) ;Einfache Hover Funktion
    If $Cursor[4] <> $Hover_Old Then
    Hover($Cursor[4])
    $Hover_Old = $Cursor[4]
    EndIf

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

    WEnd

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

    Func Hover($ID) ;wenn der Zeiger über dem Kontrol ist dann ...
    Switch $ID
    Case $Button1
    msgbox(1, "", "Cursor über Button1") ;hier kommt die jeweilige Funktion hin
    case $bild1
    msgbox(1, "", "Cursor über Bild1")
    EndSwitch
    EndFunc

    [/autoit]
  • Wenn aufs Bildgeklickt wird Funktion aufrufen

    • nuts
    • 9. März 2009 um 18:40

    Du kannst den Klick auf ein Bild mit dem Style SS_NOTIFY abfangen.

    [autoit]

    $Pic1 = GUICtrlCreatePic("", 112, 72, 265, 169, $SS_NOTIFY)

    [/autoit]
  • Listview Optik - Seltsames Verhalten

    • nuts
    • 7. März 2009 um 01:06

    Und ich kämpfe schon ne halbe Stunde mit dem Dummy und _WinAPI_SetFocus() .. :S

    Vielen dank Bugfix :thumbup:

  • Listview Optik - Seltsames Verhalten

    • nuts
    • 6. März 2009 um 21:10

    Verstehe ich nicht.
    Bei mir verhält es sich wie beschrieben.

    Wie ists bei den anderen?

  • Listview Optik - Seltsames Verhalten

    • nuts
    • 6. März 2009 um 20:15

    Hey,

    ich habe hier eine merkwürdige Beobachtung gemacht.

    Beispiel: Nach dem Listview wird ein weiteres GUI-Element (der Button) hinzugefügt

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>

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

    Global $sHeader = "Aufgabe|Erstellt am|Termin"
    $Form = GUICreate("test", 633, 447, 193, 125)

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

    $ListView = GUICtrlCreateListView($sHeader, 0, 0, 400, 300)
    $hListView = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetColumn($hListView, 0, "Column 1", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 1, "Column 2", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 2, "Column 3", 100, 0)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Row" & $i & ": Col 1", $i-1)
    For $j = 1 To 2
    _GUICtrlListView_AddSubItem ($hListView, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    Next
    Next
    Global $hDelAll = GUICtrlCreateButton("Test", 500, 300, 90, 35)

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

    GUISetState(@SW_SHOW, $form)

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

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

    [/autoit]

    Beispiel2: Nach dem Listview wird kein weiteres GUI-Element hinzugefügt.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>

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

    Global $sHeader = "Aufgabe|Erstellt am|Termin"
    $Form = GUICreate("test", 633, 447, 193, 125)

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

    $ListView = GUICtrlCreateListView($sHeader, 0, 0, 400, 300)
    $hListView = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetColumn($hListView, 0, "Column 1", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 1, "Column 2", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 2, "Column 3", 100, 0)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Row" & $i & ": Col 1", $i-1)
    For $j = 1 To 2
    _GUICtrlListView_AddSubItem ($hListView, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    Next
    Next
    ;Global $hDelAll = GUICtrlCreateButton("Test", 500, 300, 90, 35)

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

    GUISetState(@SW_SHOW, $form)

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

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

    [/autoit]

    Klickt man ein Listviewitem an und "deaktiviert" man es durch einen Klick ins freie Listview bleibt bei Beispiel 2 eine Umrandung stehen. Meiner Meinung nach sieht das sehr unschön aus :(
    Bei Beispiel 1 ist das nicht so.

    Hintergrund: Ich habe das Beispiel von Bugfix zum Färben einzelner Listvie-Items in mein Skript eingebaut und dabei wird sowie ich das verstanden hab das ganze "neu gezeichnet". Der Vorgang hat die selbe Auswirkung wie in den Beispielen und ich weiss nicht wie ich das Umgehen kann.

    Anbei noch das ganze Skript:

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Guilistview.au3>
    #include <File.au3>
    #include <StaticConstants.au3>
    #Include <Date.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #NoTrayIcon

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

    Global $hFont, $defColLV = 0x000000, $defBkColLV = 0xFFFFFF
    Global $aSubItemSet[1][5] = [[-1]]
    Global $setIndex, $setSubIndex

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

    Global Const $N_DBLCLK = -3
    global $titel = "Nuts-Aufgabenplaner"

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

    if _Singleton($titel,1) = 0 then
    MsgBox(0, "Achtung", "Anwendung läuft bereits!", 3)
    exit
    endif

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

    Global $sHeader = "Aufgabe|Erstellt am|Termin|Status|Schlussbemerkung" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $iEdit = -1
    Global $sDBFile = IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")
    Global $dbnew
    Global $todo = "ToDo"
    Global $done = "Done"
    Global $HA = 630
    Global $VA = 1100

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

    HotKeySet("^a", "Checktoggle")
    HotKeySet("^e", "Edit")
    HotKeySet("^s", "_SetSelected")
    HotKeySet("{DELETE}" ,"_DelSelected")
    HotKeySet("!s" ,"Save")
    HotKeySet("!t", "Termin")

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

    #Region Hauptfenster
    Global $bfarbe = 0xC0C0C0
    $LVStyle = BitOR($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS )
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
    Global $hGui = GUICreate($titel ,$VA, $HA) ; Hauptfenster erstellen
    GUISetIcon(@ScriptDir & "\Bilder\check.ico", -1)
    GUISetBkColor ($bfarbe)

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

    ;;;;;Listview erstellen
    Global $hListView = GUICtrlCreateListView($sheader, 0, 110, 1100, 500, $LVStyle, $ExStyle) ; Listview erstellen
    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Aufgabe", 400, 0) ; 1. Spalte = 360 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Erstellt am", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Termin", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Status", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Schlussbemerkung", 455, 0)

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

    ;;;Aktiver User
    Global $hinput = Guictrlcreateinput("", 100, 40, 250, 31, BitOR($ES_READONLY, $ES_AUTOHSCROLL), $WS_EX_TRANSPARENT)
    GUICtrlSetBkColor ($hinput,$bfarbe)
    GUICtrlSetColor($hinput, 0x4169E1)
    GUIctrlcreatepic(@ScriptDir & "\Bilder\user-48x48.bmp", 35, 31, 48, 48)
    GUICtrlCreateGroup('Aktiver Benutzer', 20, 10, 345, 81)
    GUICtrlSetFont($hinput, 14, 800, 0)

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

    ;;;;;;;;Hauptmenü
    Global $hMenu = GUICtrlCreateMenu("Menü") ;Erstellt das Menü für die HauptGUI
    Global $hcUser = GUICtrlCreateMenuItem("Neuer Benutzer", $hmenu) ; der 1. Kontextmenüeintrag
    Global $hcopen = GUICtrlCreateMenuItem("Öffnen", $hmenu)
    Global $hcEinstellungen = GUICtrlCreateMenuItem("Einstellungen", $hmenu)
    Global $hcBackup = GUICtrlCreateMenuItem("Backup", $hmenu)
    Global $hcspeichern = GUICtrlCreateMenuItem("Speichern", $hmenu)
    Global $hcExit = GUICtrlCreateMenuItem("Exit", $hmenu)

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

    ;;;;;; Bearbeiten Menü
    Global $hbearbeiten = GUICtrlCreateMenu("Bearbeiten")
    Global $hccheckall = GUICtrlCreateMenuItem("Check all / Uncheck all (STRG+A)", $hbearbeiten)
    Global $hcdelchecked = GUICtrlCreateMenuItem("Delete all checked", $hbearbeiten)
    Global $hcNew = GUICtrlCreateMenuItem("Neuer Eintrag (Enter)", $hbearbeiten)
    Global $hcEdit = GUICtrlCreateMenuItem("Markierten Eintrag bearbeiten (STRG+E)" , $hbearbeiten)
    Global $hcstatus = GUICtrlCreateMenuItem("Status aller gecheckten Items ändern", $hbearbeiten)

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

    ;;;Buttons
    GUICtrlCreateGroup("Neu" & @CRLF & "(Enter)", 570, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Speichern " & @CRLF & "(Alt+S)", 674, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Bearbeiten " & @CRLF & "(Strg+E)", 778, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Löschen" & @CRLF & "(Entf)", 882, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Status ändern" & @CRLF & "(Strg+S)", 986, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))

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

    Global $hNew = GUICtrlCreateButton("", 600, 45, 34, 34, BitOR($BS_DEFPUSHBUTTON, $BS_BITMAP)) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetImage($hnew,@ScriptDir & "\Bilder\new-32x32.bmp")
    Global $hsave = GUICtrlCreateButton("", 704, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hsave,@ScriptDir & "\Bilder\save-32x32.bmp")
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten" & @CRLF & "(Strg+E)", 808, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hEdit,@ScriptDir & "\Bilder\edit-32x32.bmp")
    Global $hdel = GUICtrlCreateButton("Markierten Eintrag löschen" & @CRLF & "(Entf)", 912, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hdel,@ScriptDir & "\Bilder\delete-32x32.bmp")
    Global $hstatus = GUICtrlCreateButton("Status ändern" & @CRLF & "(Strg+S)", 1016, 45,34,34, $BS_BITMAP)
    GUICtrlSetImage($hstatus,@ScriptDir & "\Bilder\check-32x32.bmp")

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

    ;;;Kontextmenü
    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
    Global $hcmstatus = GUICtrlCreateMenuItem("Status ändern", $hcm)

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

    #EndRegion Hauptfenster

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

    #Region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 1100, 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
    Global $aInputWidth[$aHeader[0]] = [370, 100, 100, 100, 400] ; hier die Länge (in Pixel) der Inputfelder eintragen
    Global $xPos = 2
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], $xPos + 2, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 30, $aInputWidth[$i-1], 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    $xPos += $aInputWidth[$i-1] + 5
    Next
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR) ;Vorgabe für Column1
    GUICtrlSetData($anew[2], "ohne") ;Vorgabe für Column2
    GUICtrlSetData($anew[3], $todo) ;Vorgabe für Column3
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 490, 65, 120, 25, $BS_DEFPUSHBUTTON)
    #EndRegion Fenster für neuen Eintrag

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

    #Region Fenster für neuen User
    Global $hGUIUser = GUICreate("Neuen Benutzer anlegen", 300, 150)
    GUISetBkColor (0xeeeeee)
    Global $hSaveUser = GUICtrlCreateButton("Speichern", 80, 100, 140, 30)
    GUICtrlSetFont($hSaveUser, 10, 600, 0, 'Verdana')
    GUICtrlCreateGroup("Benutzername eingeben", 10, 20, 280, 51)
    Global $hInputUser = GUICtrlCreateInput("", 20, 40, 260, 21)
    GUICtrlSetFont($hinputUser, 10, 600, 0, 'Verdana')

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

    #EndRegion Fenster für neuen User

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

    #Region Fenster für Einstellungen

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

    Global $inistartdb = IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")
    Global $inibackup = IniRead(@scriptdir & "\konfig.ini", "Einstellungen", "Backup","")
    Global $hGUIEinstellungen = GUICreate("Einstellungen", 600, 600, 193, 125)
    GUISetBkColor(0xeeeeee)
    Global $hSaveEinstellungen = GUICtrlCreateButton("Speichern", 210, 500, 180, 50, 0)

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

    GUICtrlCreateGroup("Verzeichnis der Start Datenbank angeben", 25, 30, 550, 51)
    Global $hInputStartDB = GUICtrlCreateInput($inistartdb , 35, 50, 500, 21, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
    Global $hButtonOpen = GUICtrlCreateButton("...", 535, 49, 30, 23)

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

    GUICtrlCreateGroup("Backup-Verzeichnis angeben", 25, 100, 550, 51)
    Global $hInputBackup = GUICtrlCreateInput($inibackup , 35, 120, 500, 21, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
    Global $hButtonOpen2 = GUICtrlCreateButton("...", 535, 119, 30, 23)

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

    #EndRegion Fenster für Einstellungen

    [/autoit] [autoit][/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]

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY" )
    ;GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView")

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

    If FileExists(IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")) Then Load() ; wenn ein Ini-Eintrag existiert, dann entsprechende Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus

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

    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hcUser
    GUISetState(@SW_SHOW, $hGuiUser) ; das Fenster "Neuer Benutzer" anzeigen
    GUISetState(@SW_DISABLE, $hGui)
    Case $hcEinstellungen
    GUISetState(@SW_SHOW, $hGuiEinstellungen) ; das Fenster "Einstellungen" anzeigen
    GUISetState(@SW_DISABLE, $hGui)
    case $hcbackup
    Backup()
    Case $hSaveUser
    NewUser()
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

    Case $hNew, $hCMNew ,$hcNew ; 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, $hcEdit ; User hat auf "Eintrag bearbeiten" geklickt
    Edit()
    ;_OneRowSetCol(2, 0xFF0000, 0x48D1CC)
    Case $hcopen ; User hat auf "Öffnen" geklickt
    If MsgBox(32 + 4, "Öffnen", "Vor dem öffnen alte Datenbank speichern?") = 6 Then Save()
    Local $sDBFile = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
    Load()
    case $hcstatus
    _SetAllcheckedItems()
    Case $hcspeichern, $hsave ; User hat auf "Speichern" geklickt
    Save()
    case $hcdelchecked
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die angehakten Einträge wirklich löschen?") = 6 Then _DeleteAllcheckedItems()
    Case $hCMDel, $hdel ; User hat auf "Markierte Einträge löschen" geklickt
    _DelSelected()
    case $hcmstatus, $hstatus
    _SetSelected()
    Case $hCreate ; User hat auf "Speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $hSaveEinstellungen ;User hat auf "Speichern" im Fenster "Einstellungen" geklickt
    Einstellungen()
    Case $hButtonOpen
    EinstellungenOpenDB()
    case $hbuttonopen2
    EinstellungenOpenBU()
    case $hccheckall
    Checktoggle()
    case $hcExit
    global $box = MsgBox(32 + 3, "Beenden", "Änderungen vor dem Beenden speichern?")
    End()
    #Region Schließen
    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
    global $box = MsgBox(32 + 3, "Beenden", "Änderungen vor dem Beenden speichern?")
    End() ; End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "")
    Next
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    $iEdit = -1
    Case $hGuiUser ; User will das Fenster "Neuen Benutzer anlegen" schließen
    GUISetState(@SW_HIDE, $hGuiUser)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    Case $hGUIEinstellungen ; User will das Fenster "Einstellungen" schließen
    If MsgBox(32 + 4, "Beenden", "Änderungen vor dem Beenden speichern?") = 6 Then Einstellungen()
    GUICtrlSetData( $hInputStartDB, $inistartdb)
    GUICtrlSetData( $hInputbackup, $inibackup)
    GUISetState(@SW_HIDE, $hGuiEinstellungen)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    EndSwitch

    #EndRegion Schließen
    EndSwitch

    WEnd

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

    Func End() ;Beenden Funktion
    If $box = 6 Then
    Save() ; Daten vor dem Beenden speichern?
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    ElseIf $box = 7 then
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    endif

    EndFunc

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    Terminschnellerfassung()
    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
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    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
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    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
    $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 New()
    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
    EndFunc

    Func Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hLVHandle)
    Local $sItem
    Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    Local $hLabelInfo = FileReadLine($hfile) ; 1. Zeile der Datenbank wird gelesen -> Für Labelbeschriftung
    GUICtrlSetData($hinput ,$hLabelInfo)
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem

    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    Local $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    Local $LabelInhalt = GUICtrlRead($hinput)
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    FileWriteLine($hFile, $LabelInhalt) ; 1. Zeile schreiben
    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
    msgbox(0, "Speichern", "Gesichert")
    EndFunc ;==>Save

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

    Func NewUser() ; Neuen Benutzer anlegen
    Local $newdb = GUICtrlRead($hInputUser)
    if $newdb <> "" then
    Global $dbnew = @ScriptDir & "\Datenbanken\" & $newdb &".txt"
    _FileCreate($dbnew)
    Fileopen(@ScriptDir & "\Datenbanken\" & $newdb &".txt",0)
    FileWriteLine(@ScriptDir & "\Datenbanken\" & $newdb &".txt", $newdb)
    FileClose(@ScriptDir & "\Datenbanken\" & $newdb &".txt")
    If FileExists($dbnew) then msgbox(0, "", "Gespeichert")
    else
    MsgBox(0, "", "Kein Benutzername eingegeben!")
    endif
    GUICtrlSetData($hinputuser, '')
    EndFunc

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

    Func Einstellungen() ;Button Aktion Einstellungen GUI
    Local $startdb = GUICtrlRead($hInputStartDB)
    IniWrite(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB", $startdb)
    Local $backup = GUICtrlRead($hInputbackup)
    IniWrite(@ScriptDir & "\konfig.ini", "Einstellungen", "Backup", $backup)
    MsgBox(0, "", "Gesichert")
    EndFunc
    Func EinstellungenOpenDB() ;Button Aktion Einstellungen GUI
    Local $hopen = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
    GUICtrlSetData($hInputStartDB ,$hopen)
    EndFunc
    Func EinstellungenOpenBU() ;Button Aktion Einstellungen GUI
    Local $hopen2 = FileSelectFolder("Bitte auswählen", "", 1)
    GUICtrlSetData($hInputBackup ,$hopen2)
    EndFunc

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

    Func _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    Local $aCheckedItems = _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCheckedCount = UBound($aCheckedItems)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $iColCount = _GUICtrlListView_GetColumnCount($hListView)
    Local $aCheckedItemsText[$iCheckedCount][$iColCount], $aTemp
    For $i = 0 To $iCheckedCount - 1
    $aTemp = _GUICtrlListView_GetItemTextArray($hListView, $aCheckedItems[$i])
    For $j = 1 To $aTemp[0]
    $aCheckedItemsText[$i][$j-1] = $aTemp[$j]
    Next
    Next
    Return $aCheckedItemsText
    EndFunc ;==>_GUICtrlListView_GetCheckedItemTextArray

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

    Func _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView)
    Local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $aCheckedItems[$iCheckedCount]
    $iCheckedCount = 0
    For $i = 0 To $iCount - 1
    If _GUICtrlListView_GetItemChecked($hListView, $i) Then
    $aCheckedItems[$iCheckedCount] = $i
    $iCheckedCount += 1
    EndIf
    Next
    Return $aCheckedItems
    EndFunc ;==>_GUICtrlListView_GetCheckedIndices

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

    Func _GUICtrlListView_GetCheckedCount($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView), $iCheckedCount = 0
    If $iCount = 0 Then Return SetError(1, 0, 0)
    For $i = 0 To $iCount - 1
    $iCheckedCount += _GUICtrlListView_GetItemChecked($hListView, $i)
    Next
    Return $iCheckedCount
    EndFunc ;==>_GUICtrlListView_GetCheckedCount

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

    Func _SetAllcheckedItems() ;Status bei angehakten Items ändern
    local $aCheckedItemsText = _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    For $i = 0 to $iCheckedCount -1
    if $aCheckedItemsText[$i][3] = $done then
    _GUICtrlListView_SetItemText($hLVHandle,$aCheckedIndices[$i], $todo, 3)
    ElseIf $aCheckedItemsText[$i][3] = $todo then
    _GUICtrlListView_SetItemText($hLVHandle,$aCheckedIndices[$i], $done, 3)
    Endif
    Next
    EndFunc

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

    Func _SetSelected()
    local $indices = _GUICtrlListView_GetSelectedIndices( $hLVHandle,0)
    local $aitemtext = _GUICtrlListView_GetItemTextArray($hLVHandle)
    if $aitemtext[4] = $done then
    _GUICtrlListView_SetItemText($hLVHandle,$indices, $todo, 3)
    ElseIf $aitemtext[4] = $todo then
    _GUICtrlListView_SetItemText($hLVHandle,$indices, $done, 3)
    _ColRowOff()
    Endif
    endfunc

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

    Func _DelSelected()
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie den markierten Eintrag wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    EndFunc

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

    Func _DeleteAllcheckedItems()
    local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    for $i = $iCheckedCount - 1 To 0 Step -1
    _GUICtrlListView_DeleteItem($hLVHandle, $aCheckedIndices[$i])
    next
    EndFunc

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

    Func Backup()
    local $inibackup = IniRead(@scriptdir & "\konfig.ini", "Einstellungen", "Backup","")
    Local $quelle = @ScriptDir & "\Datenbanken\"
    local $size1 = DirGetSize($quelle)
    if $inibackup <> "" then
    dircopy($quelle, $inibackup, 1)
    local $size2 = DirGetSize($inibackup)
    if $size1 = $size2 then MsgBox(0, "", "Backup erfolgreich")
    else
    msgbox(0, "", "Kein Backupverzeichnis angegeben")
    endif

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

    EndFunc

    Func Terminschnellerfassung()
    local $read = GUICtrlRead($anew[2])
    if $read <> "ohne" then
    local $startdate = GUICtrlRead($anew[1])
    local $splitsd =StringSplit($startdate, ".")
    local $date = $splitsd[3] & "/" & $splitsd[2] & "/" & $splitsd[1]
    local $tdate = _DateAdd('d', $read , $date)
    if $tdate <> '0' then
    local $splited = StringSplit($tdate, "/")
    local $enddate = $splited[3] & "." & $splited[2] & "." & $splited[1]
    GUICtrlSetData($anew[2], $enddate)
    endif
    EndIf
    EndFunc

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

    Func Checktoggle()
    local $checked = _GUICtrlListView_GetCheckedCount($hListView)
    local $all = _GUICtrlListView_GetItemCount($hListView)
    if $checked = $all then
    _GUICtrlListView_SetItemChecked($hListView, -1, False)
    else
    _GUICtrlListView_SetItemChecked($hListView, -1, True)
    endif
    Endfunc

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

    Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $hListView Then;Wenn der Klick auf das ListView ging..
    If $event = $N_DBLCLK Then;.. Wenn es ein DoppelKlick war
    Edit()
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

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

    Func Termin()
    local $icount = _GUICtrlListView_GetItemCount($hLVHandle)
    for $i = 0 to $icount -1
    local $stext = _GUICtrlListView_GetItemText($hLVHandle,$i, 2)
    local $sstatus = _GUICtrlListView_GetItemText($hLVHandle,$i, 3)
    if $stext <> "ohne" and $sstatus = $todo then
    local $sdate =StringSplit($stext, ".")
    local $date = $sdate[3] & "/" & $sdate[2] & "/" & $sdate[1]
    if _DateDiff("d", @year & "/" & @MON & "/" & @MDAY , $date) < 10 then _OneRowSetCol($i, 0xFF0000, 0x000000);MsgBox(1, "", "lala")
    endif
    next
    EndFunc

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

    Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam)
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hLVHandle
    Switch $iCode
    Case $NM_CUSTOMDRAW
    If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
    Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect
    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
    Switch $iDrawStage
    Case $CDDS_ITEMPREPAINT
    Return $CDRF_NOTIFYSUBITEMDRAW
    Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
    $iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
    $iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
    _SetItemCol($hDC, $tCustDraw, $iItem, $iSubitem)
    Return $CDRF_NEWFONT
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _SetItemCol(ByRef $hDC, ByRef $tCustDraw, $iItem, $iSubitem)
    If $aSubItemSet[0][0] = -1 Then
    If $aSubItemSet[0][1] < 0 Then
    Switch $aSubItemSet[0][1]
    Case -3 ; einzelne Zeile färben
    If $iItem = $aSubItemSet[0][4] Then
    DllStructSetData($tCustDraw, 'clrText', RGB2BGR($aSubItemSet[0][3]))
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aSubItemSet[0][2]))
    Else
    DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV))
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($defBkColLV))
    EndIf
    Case Else
    Return
    EndSwitch

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

    EndIf
    endif
    endfunc

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

    Func RGB2BGR($iColor)
    Local $sH = Hex($iColor,6)
    Return '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    EndFunc

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

    Func _OneRowSetCol($iIndex, $iBkCol=-1, $iCol=-1) ;die brauch ich
    if $iBkCol = -1 Then $iBkCol = $defBkColLV
    If $iCol = -1 Then $iCol = $defColLV
    $aSubItemSet[0][0] = -1
    $aSubItemSet[0][1] = -3
    $aSubItemSet[0][2] = $iBkCol
    $aSubItemSet[0][3] = $iCol
    $aSubItemSet[0][4] = $iIndex
    _WinAPI_InvalidateRect($hLVHandle)
    EndFunc

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

    Func _ColRowOff()
    $aSubItemSet[0][0] = -1
    $aSubItemSet[0][1] = 0
    $aSubItemSet[0][2] = 0
    $aSubItemSet[0][3] = 0
    $aSubItemSet[0][4] = 0
    _WinAPI_InvalidateRect($hLVHandle)
    EndFunc

    [/autoit]

    Edit \ Der Thread wurde auch zuviel erstellt - Sorry Leute aber das Forum hat mir einen Streich gespielt ..

  • Listview Optik - Seltsames Verhalten

    • nuts
    • 6. März 2009 um 20:13

    Hey,

    ich habe hier eine merkwürdige Beobachtung gemacht.

    Beispiel: Nach dem Listview wird ein weiteres GUI-Element (der Button) hinzugefügt

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>

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

    Global $sHeader = "Aufgabe|Erstellt am|Termin"
    $Form = GUICreate("test", 633, 447, 193, 125)

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

    $ListView = GUICtrlCreateListView($sHeader, 0, 0, 400, 300)
    $hListView = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetColumn($hListView, 0, "Column 1", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 1, "Column 2", 100, 0)
    _GUICtrlListView_SetColumn($hListView, 2, "Column 3", 100, 0)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Row" & $i & ": Col 1", $i-1)
    For $j = 1 To 2
    _GUICtrlListView_AddSubItem ($hListView, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    Next
    Next
    Global $hDelAll = GUICtrlCreateButton("Test", 500, 300, 90, 35)

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

    GUISetState(@SW_SHOW, $form)

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

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

    [/autoit]

    Beispiel2: Nach dem Listview wird kein weiteres GUI-Element hinzugefügt.

    Klickt man ein Listviewitem an und "deaktiviert" man es durch einen Klick ins freie Listview bleibt bei Beispiel 2 eine Umrandung stehen. Meiner Meinung nach sieht das sehr unschön aus :(
    Bei Beispiel 1 ist das nicht so.

    Hintergrund: Ich habe das Beispiel von Bugfix zum Färben einzelner Listvie-Items in mein Skript eingebaut und dabei wird sowie ich das verstanden hab das ganze "neu gezeichnet". Der Vorgang hat die selbe Auswirkung wie in den Beispielen und ich weiss nicht wie ich das Umgehen kann.

    Anbei noch das ganze Skript:

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Guilistview.au3>
    #include <File.au3>
    #include <StaticConstants.au3>
    #Include <Date.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #NoTrayIcon

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

    Global $hFont, $defColLV = 0x000000, $defBkColLV = 0xFFFFFF
    Global $aSubItemSet[1][5] = [[-1]]
    Global $setIndex, $setSubIndex

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

    Global Const $N_DBLCLK = -3
    global $titel = "Nuts-Aufgabenplaner"

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

    if _Singleton($titel,1) = 0 then
    MsgBox(0, "Achtung", "Anwendung läuft bereits!", 3)
    exit
    endif

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

    Global $sHeader = "Aufgabe|Erstellt am|Termin|Status|Schlussbemerkung" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $iEdit = -1
    Global $sDBFile = IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")
    Global $dbnew
    Global $todo = "ToDo"
    Global $done = "Done"
    Global $HA = 630
    Global $VA = 1100

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

    HotKeySet("^a", "Checktoggle")
    HotKeySet("^e", "Edit")
    HotKeySet("^s", "_SetSelected")
    HotKeySet("{DELETE}" ,"_DelSelected")
    HotKeySet("!s" ,"Save")
    HotKeySet("!t", "Termin")

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

    #Region Hauptfenster
    Global $bfarbe = 0xC0C0C0
    $LVStyle = BitOR($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS )
    $ExStyle = BitOR($LVS_EX_FULLROWSELECT, $WS_EX_DLGMODALFRAME, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
    Global $hGui = GUICreate($titel ,$VA, $HA) ; Hauptfenster erstellen
    GUISetIcon(@ScriptDir & "\Bilder\check.ico", -1)
    GUISetBkColor ($bfarbe)

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

    ;;;;;Listview erstellen
    Global $hListView = GUICtrlCreateListView($sheader, 0, 110, 1100, 500, $LVStyle, $ExStyle) ; Listview erstellen
    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Aufgabe", 400, 0) ; 1. Spalte = 360 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Erstellt am", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Termin", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Status", 80, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Schlussbemerkung", 455, 0)

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

    ;;;Aktiver User
    Global $hinput = Guictrlcreateinput("", 100, 40, 250, 31, BitOR($ES_READONLY, $ES_AUTOHSCROLL), $WS_EX_TRANSPARENT)
    GUICtrlSetBkColor ($hinput,$bfarbe)
    GUICtrlSetColor($hinput, 0x4169E1)
    GUIctrlcreatepic(@ScriptDir & "\Bilder\user-48x48.bmp", 35, 31, 48, 48)
    GUICtrlCreateGroup('Aktiver Benutzer', 20, 10, 345, 81)
    GUICtrlSetFont($hinput, 14, 800, 0)

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

    ;;;;;;;;Hauptmenü
    Global $hMenu = GUICtrlCreateMenu("Menü") ;Erstellt das Menü für die HauptGUI
    Global $hcUser = GUICtrlCreateMenuItem("Neuer Benutzer", $hmenu) ; der 1. Kontextmenüeintrag
    Global $hcopen = GUICtrlCreateMenuItem("Öffnen", $hmenu)
    Global $hcEinstellungen = GUICtrlCreateMenuItem("Einstellungen", $hmenu)
    Global $hcBackup = GUICtrlCreateMenuItem("Backup", $hmenu)
    Global $hcspeichern = GUICtrlCreateMenuItem("Speichern", $hmenu)
    Global $hcExit = GUICtrlCreateMenuItem("Exit", $hmenu)

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

    ;;;;;; Bearbeiten Menü
    Global $hbearbeiten = GUICtrlCreateMenu("Bearbeiten")
    Global $hccheckall = GUICtrlCreateMenuItem("Check all / Uncheck all (STRG+A)", $hbearbeiten)
    Global $hcdelchecked = GUICtrlCreateMenuItem("Delete all checked", $hbearbeiten)
    Global $hcNew = GUICtrlCreateMenuItem("Neuer Eintrag (Enter)", $hbearbeiten)
    Global $hcEdit = GUICtrlCreateMenuItem("Markierten Eintrag bearbeiten (STRG+E)" , $hbearbeiten)
    Global $hcstatus = GUICtrlCreateMenuItem("Status aller gecheckten Items ändern", $hbearbeiten)

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

    ;;;Buttons
    GUICtrlCreateGroup("Neu" & @CRLF & "(Enter)", 570, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Speichern " & @CRLF & "(Alt+S)", 674, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Bearbeiten " & @CRLF & "(Strg+E)", 778, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Löschen" & @CRLF & "(Entf)", 882, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))
    GUICtrlCreateGroup("Status ändern" & @CRLF & "(Strg+S)", 986, 10, 94, 81,Bitor($BS_MULTILINE, $BS_Center))

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

    Global $hNew = GUICtrlCreateButton("", 600, 45, 34, 34, BitOR($BS_DEFPUSHBUTTON, $BS_BITMAP)) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetImage($hnew,@ScriptDir & "\Bilder\new-32x32.bmp")
    Global $hsave = GUICtrlCreateButton("", 704, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hsave,@ScriptDir & "\Bilder\save-32x32.bmp")
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten" & @CRLF & "(Strg+E)", 808, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hEdit,@ScriptDir & "\Bilder\edit-32x32.bmp")
    Global $hdel = GUICtrlCreateButton("Markierten Eintrag löschen" & @CRLF & "(Entf)", 912, 45, 34, 34, $BS_BITMAP)
    GUICtrlSetImage($hdel,@ScriptDir & "\Bilder\delete-32x32.bmp")
    Global $hstatus = GUICtrlCreateButton("Status ändern" & @CRLF & "(Strg+S)", 1016, 45,34,34, $BS_BITMAP)
    GUICtrlSetImage($hstatus,@ScriptDir & "\Bilder\check-32x32.bmp")

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

    ;;;Kontextmenü
    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
    Global $hcmstatus = GUICtrlCreateMenuItem("Status ändern", $hcm)

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

    #EndRegion Hauptfenster

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

    #Region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 1100, 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
    Global $aInputWidth[$aHeader[0]] = [370, 100, 100, 100, 400] ; hier die Länge (in Pixel) der Inputfelder eintragen
    Global $xPos = 2
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], $xPos + 2, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 30, $aInputWidth[$i-1], 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    $xPos += $aInputWidth[$i-1] + 5
    Next
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR) ;Vorgabe für Column1
    GUICtrlSetData($anew[2], "ohne") ;Vorgabe für Column2
    GUICtrlSetData($anew[3], $todo) ;Vorgabe für Column3
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 490, 65, 120, 25, $BS_DEFPUSHBUTTON)
    #EndRegion Fenster für neuen Eintrag

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

    #Region Fenster für neuen User
    Global $hGUIUser = GUICreate("Neuen Benutzer anlegen", 300, 150)
    GUISetBkColor (0xeeeeee)
    Global $hSaveUser = GUICtrlCreateButton("Speichern", 80, 100, 140, 30)
    GUICtrlSetFont($hSaveUser, 10, 600, 0, 'Verdana')
    GUICtrlCreateGroup("Benutzername eingeben", 10, 20, 280, 51)
    Global $hInputUser = GUICtrlCreateInput("", 20, 40, 260, 21)
    GUICtrlSetFont($hinputUser, 10, 600, 0, 'Verdana')

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

    #EndRegion Fenster für neuen User

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

    #Region Fenster für Einstellungen

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

    Global $inistartdb = IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")
    Global $inibackup = IniRead(@scriptdir & "\konfig.ini", "Einstellungen", "Backup","")
    Global $hGUIEinstellungen = GUICreate("Einstellungen", 600, 600, 193, 125)
    GUISetBkColor(0xeeeeee)
    Global $hSaveEinstellungen = GUICtrlCreateButton("Speichern", 210, 500, 180, 50, 0)

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

    GUICtrlCreateGroup("Verzeichnis der Start Datenbank angeben", 25, 30, 550, 51)
    Global $hInputStartDB = GUICtrlCreateInput($inistartdb , 35, 50, 500, 21, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
    Global $hButtonOpen = GUICtrlCreateButton("...", 535, 49, 30, 23)

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

    GUICtrlCreateGroup("Backup-Verzeichnis angeben", 25, 100, 550, 51)
    Global $hInputBackup = GUICtrlCreateInput($inibackup , 35, 120, 500, 21, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
    Global $hButtonOpen2 = GUICtrlCreateButton("...", 535, 119, 30, 23)

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

    #EndRegion Fenster für Einstellungen

    [/autoit] [autoit][/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]

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY" )
    ;GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView")

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

    If FileExists(IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")) Then Load() ; wenn ein Ini-Eintrag existiert, dann entsprechende Datenbank laden

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus

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

    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hcUser
    GUISetState(@SW_SHOW, $hGuiUser) ; das Fenster "Neuer Benutzer" anzeigen
    GUISetState(@SW_DISABLE, $hGui)
    Case $hcEinstellungen
    GUISetState(@SW_SHOW, $hGuiEinstellungen) ; das Fenster "Einstellungen" anzeigen
    GUISetState(@SW_DISABLE, $hGui)
    case $hcbackup
    Backup()
    Case $hSaveUser
    NewUser()
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren

    Case $hNew, $hCMNew ,$hcNew ; 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, $hcEdit ; User hat auf "Eintrag bearbeiten" geklickt
    Edit()
    ;_OneRowSetCol(2, 0xFF0000, 0x48D1CC)
    Case $hcopen ; User hat auf "Öffnen" geklickt
    If MsgBox(32 + 4, "Öffnen", "Vor dem öffnen alte Datenbank speichern?") = 6 Then Save()
    Local $sDBFile = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
    Load()
    case $hcstatus
    _SetAllcheckedItems()
    Case $hcspeichern, $hsave ; User hat auf "Speichern" geklickt
    Save()
    case $hcdelchecked
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die angehakten Einträge wirklich löschen?") = 6 Then _DeleteAllcheckedItems()
    Case $hCMDel, $hdel ; User hat auf "Markierte Einträge löschen" geklickt
    _DelSelected()
    case $hcmstatus, $hstatus
    _SetSelected()
    Case $hCreate ; User hat auf "Speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $hSaveEinstellungen ;User hat auf "Speichern" im Fenster "Einstellungen" geklickt
    Einstellungen()
    Case $hButtonOpen
    EinstellungenOpenDB()
    case $hbuttonopen2
    EinstellungenOpenBU()
    case $hccheckall
    Checktoggle()
    case $hcExit
    global $box = MsgBox(32 + 3, "Beenden", "Änderungen vor dem Beenden speichern?")
    End()
    #Region Schließen
    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
    global $box = MsgBox(32 + 3, "Beenden", "Änderungen vor dem Beenden speichern?")
    End() ; End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "")
    Next
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    $iEdit = -1
    Case $hGuiUser ; User will das Fenster "Neuen Benutzer anlegen" schließen
    GUISetState(@SW_HIDE, $hGuiUser)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    Case $hGUIEinstellungen ; User will das Fenster "Einstellungen" schließen
    If MsgBox(32 + 4, "Beenden", "Änderungen vor dem Beenden speichern?") = 6 Then Einstellungen()
    GUICtrlSetData( $hInputStartDB, $inistartdb)
    GUICtrlSetData( $hInputbackup, $inibackup)
    GUISetState(@SW_HIDE, $hGuiEinstellungen)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    EndSwitch

    #EndRegion Schließen
    EndSwitch

    WEnd

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

    Func End() ;Beenden Funktion
    If $box = 6 Then
    Save() ; Daten vor dem Beenden speichern?
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    ElseIf $box = 7 then
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    endif

    EndFunc

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    Terminschnellerfassung()
    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
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    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
    GUICtrlSetData($aNew[1], @MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($anew[2], "ohne")
    GUICtrlSetData($anew[3], $todo)
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    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
    $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 New()
    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
    EndFunc

    Func Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hLVHandle)
    Local $sItem
    Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    Local $hLabelInfo = FileReadLine($hfile) ; 1. Zeile der Datenbank wird gelesen -> Für Labelbeschriftung
    GUICtrlSetData($hinput ,$hLabelInfo)
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem

    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    Local $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    Local $LabelInhalt = GUICtrlRead($hinput)
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    FileWriteLine($hFile, $LabelInhalt) ; 1. Zeile schreiben
    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
    msgbox(0, "Speichern", "Gesichert")
    EndFunc ;==>Save

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

    Func NewUser() ; Neuen Benutzer anlegen
    Local $newdb = GUICtrlRead($hInputUser)
    if $newdb <> "" then
    Global $dbnew = @ScriptDir & "\Datenbanken\" & $newdb &".txt"
    _FileCreate($dbnew)
    Fileopen(@ScriptDir & "\Datenbanken\" & $newdb &".txt",0)
    FileWriteLine(@ScriptDir & "\Datenbanken\" & $newdb &".txt", $newdb)
    FileClose(@ScriptDir & "\Datenbanken\" & $newdb &".txt")
    If FileExists($dbnew) then msgbox(0, "", "Gespeichert")
    else
    MsgBox(0, "", "Kein Benutzername eingegeben!")
    endif
    GUICtrlSetData($hinputuser, '')
    EndFunc

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

    Func Einstellungen() ;Button Aktion Einstellungen GUI
    Local $startdb = GUICtrlRead($hInputStartDB)
    IniWrite(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB", $startdb)
    Local $backup = GUICtrlRead($hInputbackup)
    IniWrite(@ScriptDir & "\konfig.ini", "Einstellungen", "Backup", $backup)
    MsgBox(0, "", "Gesichert")
    EndFunc
    Func EinstellungenOpenDB() ;Button Aktion Einstellungen GUI
    Local $hopen = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
    GUICtrlSetData($hInputStartDB ,$hopen)
    EndFunc
    Func EinstellungenOpenBU() ;Button Aktion Einstellungen GUI
    Local $hopen2 = FileSelectFolder("Bitte auswählen", "", 1)
    GUICtrlSetData($hInputBackup ,$hopen2)
    EndFunc

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

    Func _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    Local $aCheckedItems = _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCheckedCount = UBound($aCheckedItems)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $iColCount = _GUICtrlListView_GetColumnCount($hListView)
    Local $aCheckedItemsText[$iCheckedCount][$iColCount], $aTemp
    For $i = 0 To $iCheckedCount - 1
    $aTemp = _GUICtrlListView_GetItemTextArray($hListView, $aCheckedItems[$i])
    For $j = 1 To $aTemp[0]
    $aCheckedItemsText[$i][$j-1] = $aTemp[$j]
    Next
    Next
    Return $aCheckedItemsText
    EndFunc ;==>_GUICtrlListView_GetCheckedItemTextArray

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

    Func _GUICtrlListView_GetCheckedIndices($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView)
    Local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    Local $aCheckedItems[$iCheckedCount]
    $iCheckedCount = 0
    For $i = 0 To $iCount - 1
    If _GUICtrlListView_GetItemChecked($hListView, $i) Then
    $aCheckedItems[$iCheckedCount] = $i
    $iCheckedCount += 1
    EndIf
    Next
    Return $aCheckedItems
    EndFunc ;==>_GUICtrlListView_GetCheckedIndices

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

    Func _GUICtrlListView_GetCheckedCount($hListView)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView), $iCheckedCount = 0
    If $iCount = 0 Then Return SetError(1, 0, 0)
    For $i = 0 To $iCount - 1
    $iCheckedCount += _GUICtrlListView_GetItemChecked($hListView, $i)
    Next
    Return $iCheckedCount
    EndFunc ;==>_GUICtrlListView_GetCheckedCount

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

    Func _SetAllcheckedItems() ;Status bei angehakten Items ändern
    local $aCheckedItemsText = _GUICtrlListView_GetCheckedItemsTextArray($hListView)
    local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    For $i = 0 to $iCheckedCount -1
    if $aCheckedItemsText[$i][3] = $done then
    _GUICtrlListView_SetItemText($hLVHandle,$aCheckedIndices[$i], $todo, 3)
    ElseIf $aCheckedItemsText[$i][3] = $todo then
    _GUICtrlListView_SetItemText($hLVHandle,$aCheckedIndices[$i], $done, 3)
    Endif
    Next
    EndFunc

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

    Func _SetSelected()
    local $indices = _GUICtrlListView_GetSelectedIndices( $hLVHandle,0)
    local $aitemtext = _GUICtrlListView_GetItemTextArray($hLVHandle)
    if $aitemtext[4] = $done then
    _GUICtrlListView_SetItemText($hLVHandle,$indices, $todo, 3)
    ElseIf $aitemtext[4] = $todo then
    _GUICtrlListView_SetItemText($hLVHandle,$indices, $done, 3)
    _ColRowOff()
    Endif
    endfunc

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

    Func _DelSelected()
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie den markierten Eintrag wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    EndFunc

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

    Func _DeleteAllcheckedItems()
    local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
    local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
    If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
    for $i = $iCheckedCount - 1 To 0 Step -1
    _GUICtrlListView_DeleteItem($hLVHandle, $aCheckedIndices[$i])
    next
    EndFunc

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

    Func Backup()
    local $inibackup = IniRead(@scriptdir & "\konfig.ini", "Einstellungen", "Backup","")
    Local $quelle = @ScriptDir & "\Datenbanken\"
    local $size1 = DirGetSize($quelle)
    if $inibackup <> "" then
    dircopy($quelle, $inibackup, 1)
    local $size2 = DirGetSize($inibackup)
    if $size1 = $size2 then MsgBox(0, "", "Backup erfolgreich")
    else
    msgbox(0, "", "Kein Backupverzeichnis angegeben")
    endif

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

    EndFunc

    Func Terminschnellerfassung()
    local $read = GUICtrlRead($anew[2])
    if $read <> "ohne" then
    local $startdate = GUICtrlRead($anew[1])
    local $splitsd =StringSplit($startdate, ".")
    local $date = $splitsd[3] & "/" & $splitsd[2] & "/" & $splitsd[1]
    local $tdate = _DateAdd('d', $read , $date)
    if $tdate <> '0' then
    local $splited = StringSplit($tdate, "/")
    local $enddate = $splited[3] & "." & $splited[2] & "." & $splited[1]
    GUICtrlSetData($anew[2], $enddate)
    endif
    EndIf
    EndFunc

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

    Func Checktoggle()
    local $checked = _GUICtrlListView_GetCheckedCount($hListView)
    local $all = _GUICtrlListView_GetItemCount($hListView)
    if $checked = $all then
    _GUICtrlListView_SetItemChecked($hListView, -1, False)
    else
    _GUICtrlListView_SetItemChecked($hListView, -1, True)
    endif
    Endfunc

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

    Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $hListView Then;Wenn der Klick auf das ListView ging..
    If $event = $N_DBLCLK Then;.. Wenn es ein DoppelKlick war
    Edit()
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

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

    Func Termin()
    local $icount = _GUICtrlListView_GetItemCount($hLVHandle)
    for $i = 0 to $icount -1
    local $stext = _GUICtrlListView_GetItemText($hLVHandle,$i, 2)
    local $sstatus = _GUICtrlListView_GetItemText($hLVHandle,$i, 3)
    if $stext <> "ohne" and $sstatus = $todo then
    local $sdate =StringSplit($stext, ".")
    local $date = $sdate[3] & "/" & $sdate[2] & "/" & $sdate[1]
    if _DateDiff("d", @year & "/" & @MON & "/" & @MDAY , $date) < 10 then _OneRowSetCol($i, 0xFF0000, 0x000000);MsgBox(1, "", "lala")
    endif
    next
    EndFunc

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

    Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam)
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hLVHandle
    Switch $iCode
    Case $NM_CUSTOMDRAW
    If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
    Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect
    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
    Switch $iDrawStage
    Case $CDDS_ITEMPREPAINT
    Return $CDRF_NOTIFYSUBITEMDRAW
    Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
    $iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
    $iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
    _SetItemCol($hDC, $tCustDraw, $iItem, $iSubitem)
    Return $CDRF_NEWFONT
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _SetItemCol(ByRef $hDC, ByRef $tCustDraw, $iItem, $iSubitem)
    If $aSubItemSet[0][0] = -1 Then
    If $aSubItemSet[0][1] < 0 Then
    Switch $aSubItemSet[0][1]
    Case -3 ; einzelne Zeile färben
    If $iItem = $aSubItemSet[0][4] Then
    DllStructSetData($tCustDraw, 'clrText', RGB2BGR($aSubItemSet[0][3]))
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aSubItemSet[0][2]))
    Else
    DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV))
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($defBkColLV))
    EndIf
    Case Else
    Return
    EndSwitch

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

    EndIf
    endif
    endfunc

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

    Func RGB2BGR($iColor)
    Local $sH = Hex($iColor,6)
    Return '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    EndFunc

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

    Func _OneRowSetCol($iIndex, $iBkCol=-1, $iCol=-1) ;die brauch ich
    if $iBkCol = -1 Then $iBkCol = $defBkColLV
    If $iCol = -1 Then $iCol = $defColLV
    $aSubItemSet[0][0] = -1
    $aSubItemSet[0][1] = -3
    $aSubItemSet[0][2] = $iBkCol
    $aSubItemSet[0][3] = $iCol
    $aSubItemSet[0][4] = $iIndex
    _WinAPI_InvalidateRect($hLVHandle)
    EndFunc

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

    Func _ColRowOff()
    $aSubItemSet[0][0] = -1
    $aSubItemSet[0][1] = 0
    $aSubItemSet[0][2] = 0
    $aSubItemSet[0][3] = 0
    $aSubItemSet[0][4] = 0
    _WinAPI_InvalidateRect($hLVHandle)
    EndFunc

    [/autoit]

    Edit \ Ohje hab große Probleme mit dem Forum und den Thread 3 mal erstellt :thumbdown:
    Der hier kann gelöscht werden.

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™