Hallo
Ich habe seit einiger Zeit an einer Listview gearbeitet und bin soweit auch zufrieden.
Zufrieden heißt nicht Perfekt. Meine Frage deshalb:
Ist es möglich an hand meiner Listview die Spalten so einzufärben wie ich es hätte?
1) Die Spalten (Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|CO-Prüfung am|BGR 500 am|Frist F3 am) sollen
wenn sie außerhalb des aktuellen Datums (abgelaufen) "ROT" gefärbt sein.
2) Die Spalten (Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|CO-Prüfung am|BGR 500 am|Frist F3 am) sollen
wenn aktuelles Datum bis drei Monate (von Jetzt bis 90 Tage) noch Gültig "GELB" gefärbt sein
3) Die Spalten (Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|CO-Prüfung am|BGR 500 am|Frist F3 am) sollen
wenn drei Monate und Später (in 90 Tagen und bis später) Gültig "GRÜN" gefärbt sein.
Diese funktion gibt es bei Excel nur hätte ich sie auch gerne bei AUTOIT. Ist das möglich und wenn Ja, wer kann mir dabei helfen?
Problem könnte sein für jede Spalte bzw. Reihe müsste das Prügrammiert werden, da in jeder Spalte und Zeile ein anderes
Start-Datum stehen könnte.
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $sHeader = "Kp.|Y-Nummer|Gerät|Ser.Nr.|Equipment|Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|CO-Prüfung am|BGR 500 am|Frist F3 am"
Global $sDBFile = @ScriptDir & "\datenbank.txt"
Global $iEdit = -1
#region Hauptfenster
Global $hGui = GUICreate("Fahrzeuge", 1000, 480)
GUISetBkColor(0xCCCCCC)
Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 1000, 400, $LVS_SHOWSELALWAYS)
Global $hLVHandle = GUICtrlGetHandle($hListView)
_GUICtrlListView_SetColumn($hLVHandle, 0, "Kp.", 30, 0)
_GUICtrlListView_SetColumn($hLVHandle, 1, "Y-Nummer", 62, 0)
_GUICtrlListView_SetColumn($hLVHandle, 2, "Gerät", 72, 0)
_GUICtrlListView_SetColumn($hLVHandle, 3, "Ser.Nr.", 100, 0)
_GUICtrlListView_SetColumn($hLVHandle, 4, "Equipment", 30, 0)
_GUICtrlListView_SetColumn($hLVHandle, 5, "Letzte TMP", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 6, "BGV A3 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 7, "BGV D8 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 8, "BGV D36 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 9, "TDv 023/024 am", 95, 0)
_GUICtrlListView_SetColumn($hLVHandle, 10, "CO-Prüfung am", 90, 0)
_GUICtrlListView_SetColumn($hLVHandle, 11, "BGR 500 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 12, "Frist F3 am", 80, 0)
Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 1000, 400, $LVS_SHOWSELALWAYS)
GUICtrlSetState(-1, $GUI_HIDE)
Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView)
_GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Kp.", 30, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Y-Nummer", 62, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Gerät", 72, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Ser.Nr.", 100, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Equipment", 30, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 5, "Letzte TMP", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 6, "BGV A3 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 7, "BGV D8 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 8, "BGV D36 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 9, "TDv 023/024 am", 95, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 10, "CO-Prüfung am", 95, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 11, "BGR 500 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 12, "Frist F3 am", 80, 0)
GUICtrlCreateLabel("Suchbegriff:", 25, 412, 100, 20)
GUICtrlSetFont(-1, 11)
Global $hSearch = GUICtrlCreateInput("", 120, 410, 430, 20)
GUICtrlSetFont(-1, 11)
Global $hSearchStart = GUICtrlCreateButton("Suche...", 560, 410, 70, 20, $BS_DEFPUSHBUTTON)
GUICtrlSetFont(-1, 9)
Global $hSearchReset = GUICtrlCreateButton("<-", 640, 410, 20, 20)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 10, 440, 100, 35)
Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 120, 440, 100, 35, $BS_MULTILINE)
Global $hAendern = GUICtrlCreateButton("Prüfungen eintragen", 230, 440, 100, 35, $BS_MULTILINE)
Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 340, 440, 100, 35, $BS_MULTILINE)
Global $hAnzeigen = GUICtrlCreateButton("Markierter Eintrag anzeigen", 450, 440, 100, 35, $BS_MULTILINE)
Global $hSave = GUICtrlCreateButton("Speichern", 560, 440, 100, 35)
Global $hLoad = GUICtrlCreateButton("Laden", 950, 402, 48, 20)
Global $hCM = GUICtrlCreateContextMenu($hListView)
Global $hCAnzeigen = GUICtrlCreateMenuItem("Markierter Eintrag anzeigen", $hCM)
Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM)
Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM)
Global $hCAendern = GUICtrlCreateMenuItem("Prüfungen eintragen", $hCM)
Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM)
$Pic1 = GUICtrlCreatePic("\Der InstLer\Wappen.bmp", 800, 402, 80, 76)
#endregion Hauptfenster
#region Fenster für neuen Eintrag
Global $hGuiNew = GUICreate("Neuer Eintrag", 770, 200, -1, -1, $WS_SYSMENU)
Global $aHeader = StringSplit($sHeader, '|')
Global $aNew[$aHeader[0]]
Global $hoehe_beginn = 15
Global $hoehe_tmp_versatz = 50
Global $i_grenze = 6
For $i = 1 To $aHeader[0]
If $i <= $i_grenze Then
$x_tmp = $i
$hoehe_tmp = $hoehe_beginn
Else
$x_tmp = $i - $i_grenze
$hoehe_tmp = $hoehe_beginn + $hoehe_tmp_versatz
EndIf
GUICtrlCreateLabel($aHeader[$i], 4 + ($x_tmp - 1) * 110, $hoehe_tmp, 100, 20)
GUICtrlSetFont(-1, 8, 400, 0, 'Verdana')
$aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($x_tmp - 1) * 110, $hoehe_tmp + 15, 100, 20, Default, $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 10, 600, 0, 'Verdana')
GUICtrlSetState(-1, $GUI_DISABLE)
Next
Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 320, 120, 120, 40, $BS_DEFPUSHBUTTON)
#endregion Fenster für neuen Eintrag
_GUICtrlListView_RegisterSortCallBack($hLVHandle)
GUISetState(@SW_SHOW, $hGui)
If FileExists($sDBFile) Then Load()
While 1
$nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
_GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
Case $hSearchStart
GUICtrlSetState($hSearchStart, $GUI_DISABLE)
_GUICtrlListView_DeleteAllItems($hSearchLVHandle)
Dim $sSearch = GUICtrlRead($hSearch), $sItem
For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
$sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
Next
GUICtrlSetState($hListView, $GUI_HIDE)
GUICtrlSetState($hSearchListView, $GUI_SHOW)
GUICtrlSetState($hSearchReset, $GUI_ENABLE)
Case $hSearchReset
GUICtrlSetData($hSearch, "")
GUICtrlSetState($hSearchListView, $GUI_HIDE)
GUICtrlSetState($hListView, $GUI_SHOW)
GUICtrlSetState($hSearchStart, $GUI_ENABLE)
GUICtrlSetState($hSearchReset, $GUI_DISABLE)
Case $hAnzeigen, $hCAnzeigen
WinSetTitle($hGuiNew, "", "Markierter Eintrag anzeigen")
For $i = 0 To 4
GUICtrlSetState($aNew[$i], $GUI_DISABLE)
Next
For $i = 5 To 11
GUICtrlSetState($aNew[$i], $GUI_DISABLE)
Next
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Edit()
Case $hNew, $hCMNew
WinSetTitle($hGuiNew, "", "Neuer Eintrag")
For $i = 0 To 4
GUICtrlSetState($aNew[$i], $GUI_ENABLE)
Next
For $i = 5 To 12
GUICtrlSetState($aNew[$i], $GUI_DISABLE)
Next
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Case $hEdit, $hCMEdit
WinSetTitle($hGuiNew, "", "Eintrag bearbeiten")
For $i = 0 To 4
GUICtrlSetState($aNew[$i], $GUI_ENABLE)
Next
For $i = 5 To 12
GUICtrlSetState($aNew[$i], $GUI_DISABLE)
Next
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Edit()
Case $hAendern, $hCAendern
WinSetTitle($hGuiNew, "", "Prüfungen eintragen")
For $i = 0 To 4
GUICtrlSetState($aNew[$i], $GUI_DISABLE)
Next
For $i = 5 To 12
GUICtrlSetState($aNew[$i], $GUI_ENABLE)
Next
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Edit()
Case $hLoad
Load()
Case $hSave
Save()
Case $hDel, $hCMDel
If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
Case $hCreate
NewItem()
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $hGui
Save()
If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End()
Case $hGuiNew
$iEdit = -1
For $i = 0 To UBound($aNew) - 1
GUICtrlSetData($aNew[$i], "")
Next
GUISetState(@SW_HIDE, $hGuiNew)
GUISetState(@SW_ENABLE, $hGui)
WinActivate($hGui)
EndSwitch
EndSwitch
WEnd
Func End()
_GUICtrlListView_UnRegisterSortCallBack($hLVHandle)
Exit
EndFunc
Func NewItem()
Local $sItem = ""
For $i = 0 To UBound($aNew) - 1
If $iEdit > -1 Then
_GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i)
Else
$sItem &= GUICtrlRead($aNew[$i]) & "|"
EndIf
GUICtrlSetData($aNew[$i], "")
Next
If $iEdit > -1 Then
$iEdit = -1
GUISetState(@SW_HIDE, $hGuiNew)
GUISetState(@SW_ENABLE, $hGui)
Sleep(300)
WinActivate($hGui)
Else
GUICtrlSetState($aNew[0], $GUI_FOCUS)
GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView)
EndIf
EndFunc
Func Edit()
$iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle)
If $iEdit > -1 Then
Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit)
For $i = 1 To $aItem[0]
GUICtrlSetData($aNew[$i - 1], $aItem[$i])
Next
EndIf
EndFunc
Func Load()
Local $hFile, $sContent, $aNewItems
$hFile = FileOpen($sDBFile, 0)
If $hFile <> -1 Then
$sContent = FileRead($hFile)
FileClose($hFile)
$sContent = StringTrimRight($sContent, 2)
$aNewItems = StringSplit($sContent, @CRLF, 1)
If Not IsArray($aNewItems) Then Return
_GUICtrlListView_BeginUpdate($hLVHandle)
For $i = 1 To $aNewItems[0]
GUICtrlCreateListViewItem($aNewItems[$i], $hListView)
Next
_GUICtrlListView_EndUpdate($hLVHandle)
EndIf
EndFunc
Func Save()
Local $sItem, $hFile, $iCount
$iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1
If $iCount = -1 Then Return FileDelete($sDBFile)
$hFile = FileOpen($sDBFile, 2)
If $hFile <> -1 Then
For $i = 0 To $iCount
$sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
FileWriteLine($hFile, $sItem)
Next
FileClose($hFile)
EndIf
EndFunc
Wie gesagt ich hoffe es kann mir einer weiterhelfen.
Die Dateien in die Datenbank.txt kopieren sind nur ein paar bsp.
eins|123456|auto|123456||11.02.2013|11.02.2013|11.02.2013|11.02.2013|11.02.2013|11.02.2013|11.02.2013|11.02.2013
zwei|234567|bahn|234567||22.03.2012|22.03.2012|22.03.2012|22.03.2012|22.03.2012|22.03.2012|22.03.2012|22.03.2012
drei|345678|bus|345678||22.03.2012|23.03.2012|23.03.2012|23.03.2012|23.03.2012|23.03.2012|23.03.2012|23.03.2012
vier|456789|rad|456789||28.07.2012|28.07.2012|28.07.2012|28.07.2012|28.07.2012|28.07.2012|28.07.2012|28.07.2012
fünf|567890|flug|567890||01.06.2012|01.07.2012|01.08.2012|01.09.2012|01.10.2012|01.11.2012|01.12.2012|01.01.2013
sechs|678901|fuß|678901|||||||||
sieben|789012|bein|789012|||||||||
acht|890123|arm|890123|||||||||
neun|901234|kopf|901234|||||||||
null|012345|hals|012345|||||||||