Hey,
ich schreibe gerade an einem kleinen ToDo-Planer. Klappt auch super und macht Spaß.
Hier mal das Skript zum testen:
Spoiler anzeigen
#include<WindowsConstants.au3>
#include<ListViewConstants.au3>
#include<ButtonConstants.au3>
#include<GUIConstantsEx.au3>
#include<Guilistview.au3>
#include <File.au3>
#include <StaticConstants.au3>
#Include <Date.au3>
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"
;TraySetIcon(@ScriptDir & "\Bilder\clock.ico") ; TrayIcon setzen
#Region Hauptfenster
$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("Listview-Datenbank-Beispiel",900, 600) ; Hauptfenster erstellen
Global $hListView = GUICtrlCreateListView($sheader, 0, 100, 900, 420, $LVStyle, $ExStyle) ; Listview erstellen
Global $hLabel = GUICtrlCreateLabel("" , 10, 10, 250, 50, Bitor($SS_CENTER, $SS_Centerimage),$SS_BLACKFRAME)
GUICtrlSetFont($hlabel, 14, "", 0)
Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
_GUICtrlListView_SetColumn($hLVHandle, 0, "Aufgabe", 360, 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", 295, 0)
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 $hbearbeiten = GUICtrlCreateMenu("Bearbeiten")
Global $hcheckall = GUICtrlCreateMenuItem("Check all", $hbearbeiten)
Global $huncheckall = GUICtrlCreateMenuItem("Uncheck all", $hbearbeiten)
Global $hdelchecked = GUICtrlCreateMenuItem("Delete all checked", $hbearbeiten)
Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 530, 80, 35, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 530, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
Global $hchecked = GUICtrlCreateButton("checked", 230, 530, 70, 35)
Global $hSave = GUICtrlCreateButton("Speichern", 310, 530, 70, 35)
Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 530, 90, 35, $BS_MULTILINE)
Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 530, 90, 35, $BS_MULTILINE)
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
[/autoit] [autoit][/autoit] [autoit]Global $hGuiNew = GUICreate("Neuer Eintrag", 900, 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]] = [400, 100, 100, 100, 170] ; 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", 390, 65, 120, 25, $BS_DEFPUSHBUTTON)
#EndRegion Fenster für neuen Eintrag
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region Fenster für neuen User
Global $hGUIUser = GUICreate("Neuen Benutzer anlegen", 300, 100)
Global $hSaveUser = GUICtrlCreateButton("Speichern", 80, 50, 140, 30)
GUICtrlSetFont($hSaveUser, 10, 600, 0, 'Verdana')
Global $hInputUser = GUICtrlCreateInput("Benutzername eingeben", 10, 10, 280, 21)
GUICtrlSetFont($hInputUser, 10, 600, 0, 'Verdana')
#EndRegion Fenster für neuen User
#Region Fenster für Einstellungen
Global $inistartdb = IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")
Global $inibackup = IniRead(@scriptdir & "\konfig.ini", "Einstellungen", "Backup","")
Global $hGUIEinstellungen = GUICreate("Einstellungen", 600, 600, 193, 125)
Global $hSaveEinstellungen = GUICtrlCreateButton("Speichern", 210, 500, 180, 50, 0)
Global $hInputStartDB = GUICtrlCreateInput($inistartdb , 50, 50, 500, 21)
Global $hLabelStartDB = GUICtrlCreateLabel("Verzeichnis der Start DB angeben", 50, 10, 179, 24, Bitor($SS_CENTER, $SS_Centerimage), $SS_BLACKFRAME)
Global $hInputBackup = GUICtrlCreateInput($inibackup , 50, 140, 500, 21)
Global $hLabelStartDB = GUICtrlCreateLabel("Backup-Verzeichnis angeben", 50, 100, 179, 24, Bitor($SS_CENTER, $SS_Centerimage), $SS_BLACKFRAME)
Global $hButtonOpen = GUICtrlCreateButton("./.", 560, 50, 20, 21)
Global $hButtonOpen2 = GUICtrlCreateButton("./.", 560, 140, 20, 21)
#EndRegion Fenster für Einstellungen
_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(IniRead(@ScriptDir & "\konfig.ini", "Einstellungen", "StartDB","")) Then Load() ; wenn ein Ini-Eintrag existiert, dann entsprechende 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 $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()
If FileExists($dbnew) then
msgbox(0, "", "Gespeichert")
else
MsgBox (0, "", "Speichern fehlgeschlagen oder kein Benutzer angegeben")
endif
Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
_GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
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 $hcopen ; User hat auf "Laden" geklickt
Local $sDBFile = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
Load()
case $hchecked
_SetAllcheckedItems()
Case $hSave ; User hat auf "Speichern" geklickt
Save()
case $hdelchecked
_DeleteAllcheckedItems()
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 "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 $hcheckall
_GUICtrlListView_SetItemChecked($hListView, -1, True)
case $huncheckall
_GUICtrlListView_SetItemChecked($hListView, -1, False)
#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
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
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
GUISetState(@SW_HIDE, $hGuiEinstellungen)
GUISetState(@SW_ENABLE, $hGui)
WinActivate($hGui)
EndSwitch
#EndRegion Schließen
EndSwitch
WEnd
Func End()
Save() ; Daten vor dem Beenden speichern
_GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
Exit ; Programm beenden
EndFunc
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
;$iEdit = -1
EndFunc ;==>NewItem
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
Func Load() ; Datenbank-Datei laden
;Save()
_GUICtrlListView_DeleteAllItems($hLVHandle)
;Global $sDBFile = FileOpenDialog("Bitte auswählen", @ScriptDir & "\Datenbanken\", "Text (*.txt)")
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($hLabel ,$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
Func Save() ; Datenbank-Datei speichern
Local $sItem
;Local $sDBFile
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($hlabel)
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
EndFunc ;==>Save
Func NewUser() ; Neuen Benutzer anlegen
Local $newdb = GUICtrlRead($hInputUser)
;if $newdb <>0 then
Global $dbnew = @ScriptDir & "\Datenbanken\" & $newdb &".txt"
;msgbox(1, "", $dbnew)
_FileCreate($dbnew)
Fileopen(@ScriptDir & "\Datenbanken\" & $newdb &".txt",0)
FileWriteLine(@ScriptDir & "\Datenbanken\" & $newdb &".txt", $newdb)
FileClose(@ScriptDir & "\Datenbanken\" & $newdb &".txt")
;endif
EndFunc
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
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
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
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
Func _SetAllcheckedItems()
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
Func _DeleteAllcheckedItems()
local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
;MsgBox(1, "",$iCheckedcount)
local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
;_ArrayDisplay($aCheckedIndices)
If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
for $i = 0 to $iCheckedCount -1
$test = _GUICtrlListView_DeleteItem($hLVHandle, $aCheckedIndices[$i])
msgbox(1, "", $test)
next
EndFunc
Func Backup()
Local $quelle = @ScriptDir & "\Datenbanken\"
local $size1 = DirGetSize($quelle)
dircopy($quelle, $inibackup, 1)
local $size2 = DirGetSize($inibackup)
if $size1 = $size2 then
MsgBox(1, "", "Backup erfolgreich")
EndIf
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
Probleme macht mir diese Funktion
Spoiler anzeigen
Func _DeleteAllcheckedItems()
local $iCheckedCount = _GUICtrlListView_GetCheckedCount($hListView)
;MsgBox(1, "",$iCheckedcount)
local $aCheckedIndices = _GUICtrlListView_GetCheckedIndices($hListView)
;_ArrayDisplay($aCheckedIndices)
If $iCheckedCount = 0 Then Return SetError(1, 0, 0)
for $i = 0 to $iCheckedCount -1
$test = _GUICtrlListView_DeleteItem($hLVHandle, $aCheckedIndices[$i])
msgbox(1, "", $test)
next
EndFunc
Und zwar werden beim ersten Anlauf nicht immer alle angehakten Items gelöscht, sondern nur die "Hälfte" (so genau konnte ichs noch nicht bestimmten, bei ungerader Anzahl wird glaube ich abgerundet).
Die Funktion direkt darüber
Spoiler anzeigen
Func _SetAllcheckedItems()
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
läuft einwandfrei und folgt eigentlich dem selben Ansatz.
Die eingebaute msgbox zeigt bei den nicht gelöschten Items auch ein "False" an. Die Frage ist nur wieso?
Gruß und schonmal danke für die Antworten.