Hey,
ihr kennt doch sicher auch die Problematik mit Müttern, die einem das Leben so richtig schwer machen können?!
Meine stellte mich vor die Herausforderung, ein FahrtenbuchTool für sie zu erschaffen. Damit liegt sie mir auch ganz schön in den Ohren.
Ja, was tut man nicht alles, um seiner Mami das Leben ein wenig zu erleichtern....
Damit bin ich auch schon recht gut voran gekommen. _GoogleMaps.au3 sei Dank
Fahrtenbücher werden erfolgreich angelegt, Kundenstamm kann bearbeitet werden (falls einer umzieht oder neue hinzu kommen), Routenberechnung anhand der Kundendaten usw...
Nun stehe ich aber vor einem Problem, bei dem ich nicht mehr weiss, wie ich das umsetzen soll. Vermutlich weil ich dazu nicht clever genug bin, oder weil ich das viel zu kompliziert versuche.
Es geht um die Darstellung der Fahrtenbücher innerhalb des Tools. Ich möchte die Daten in einer TreeView darstellen in folgender Aufteilung:
2012
Januar
01 (Montag)
02 (Dienstag)
Februar
01 (Montag)
02 (Dienstag)
2013
Januar
01 (Montag)
02 (Dienstag)
Februar
01 (Montag)
02 (Dienstag)
...
...
...
Alles anzeigen
Das mit den Jahren und Monaten kriege ich noch selber gebacken, ABER die Tage... die machen mich fertig!
Das komplette Script kann ich kaum posten, da ich darin auch mit eigenen Includes arbeite und auch mit einer Verzeichnisstruktur, die bei euch nicht gegeben sein wird.
Darum habe ich ein kleines Beispiel zurecht geschustert. Ein GUI mit 2 TreeViews. Links ist die TreeView, die ich erstelle und rechts ist ein Beispiel, so wie es aussehen soll.
lauffähiges Scriptbeispiel
#include <Array.au3>
#include <GuiTreeView.au3>
#include <GuiConstants.au3>
; Dieses Array ist ein Beispiel dafür, wie die Daten aus den FahrtenbuchDateien zurück gegeben werden.
Global $a_FahrtenbuchDaten[13][3] = [[12], ["2012", "November", "01 (Montag)"], ["2012", "November", "02 (Dienstag)"], ["2012", "Dezember", "03 (Mittwoch)"], ["2013", "Oktober", "04 (Donnerstag)"], _
["2013", "November", "05 (Freitag)"], ["2013", "Dezember", "06 (Samstag)"], ["2014", "November", "07 (Sonntag)"], ["2014", "November", "08 (Montag)"], _
["2014", "November", "09 (Dienstag)"], ["2015", "Juni", "10 (Mittwoch)"], ["2015", "August", "11 (Donnerstag)"], ["2015", "Oktober", "12 (Freitag)"]]
; Dieses Array ist ein Beispiel dafür, wie FileListToArray() in der Funktion "TreeView_Fahrtenbuch()" die Daten zurück gibt.
Global $a_Fahrtenbuch[5] = [4, "Fahrtenbuch 2012.dat", "Fahrtenbuch 2013.dat", "Fahrtenbuch 2014.dat", "Fahrtenbuch 2015.dat"]
Global $hGui, $hSoSollsWerden, $hTreeView
Func _TreeView_Fahrtenbuch() ; <---------------- Um diese Funktion dreht sich das Ganze.
_GUICtrlTreeView_DeleteAll($hTreeView)
Local $Anzahl_Jahre = $a_Fahrtenbuch ; <---- Diese beiden Arrays werden im eigentlichen Script zwar anders deklariert,
Local $a_FB_DATA = $a_FahrtenbuchDaten ; <-- aber im Endeffekt sind die Inhalte der Daten absolut identisch.
Local $Index_Total = $a_FB_DATA[0][0], $Monat = "", $MonatCheck = "", $Jahr = ""
Dim $hItem_Jahr[$Anzahl_Jahre[0] + 1], $hItem_Monat[1], $hItem_Tag[1]
For $i = 1 To $Anzahl_Jahre[0]
$Jahr = StringTrimRight(StringRight($Anzahl_Jahre[$i], 8), 4)
$hItem_Jahr[$i] = _GUICtrlTreeView_Add($hTreeView, 0, $Jahr)
GUICtrlSetFont(-1, 12, 800)
$MonatCheck = ""
For $k = 1 To $Index_Total
If $a_FB_DATA[$k][0] = $Jahr Then
$Monat = $a_FB_DATA[$k][1]
If $Monat <> $MonatCheck Then
_GUICtrlTreeView_AddChild($hTreeView, $hItem_Jahr[$i], $Monat)
EndIf
$MonatCheck = $Monat
EndIf
Next
Next
_GUICtrlTreeView_Expand($hTreeView)
EndFunc ;==>_TreeView_Fahrtenbuch
#Region ####; Do not touch anything below this line ;-)))
Func _SoSollsSein()
$hSoSollsWerden = GUICtrlCreateTreeView(250, 50, 200, 500)
GUICtrlSetBkColor(-1, 0xFFFBBB)
GUICtrlSetFont(-1, 12)
Local $1 = _GUICtrlTreeView_Add($hSoSollsWerden, 0, "2012")
Local $2 = _GUICtrlTreeView_Add($hSoSollsWerden, 0, "2013")
Local $3 = _GUICtrlTreeView_Add($hSoSollsWerden, 0, "2014")
Local $4 = _GUICtrlTreeView_Add($hSoSollsWerden, 0, "2015")
Local $1_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $1, "November")
Local $1_2 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $1, "Dezember")
Local $2_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2, "Oktober")
Local $2_2 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2, "November")
Local $2_3 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2, "Dezember")
Local $3_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $3, "November")
Local $4_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4, "Juni")
Local $4_2 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4, "August")
Local $4_3 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4, "Oktober")
Local $1_1_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $1_1, "01 (Montag)")
Local $1_1_2 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $1_1, "02 (Dienstag)")
Local $1_2_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $1_2, "03 (Mittwoch)")
Local $2_1_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2_1, "04 (Donnerstag)")
Local $2_2_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2_2, "05 (Freitag)")
Local $2_3_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $2_3, "06 (Samstag)")
Local $3_1_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $3_1, "07 (Sonntag)")
Local $3_1_2 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $3_1, "08 (Montag)")
Local $3_1_3 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $3_1, "09 (Dienstag)")
Local $4_1_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4_1, "10 (Mittwoch)")
Local $4_2_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4_2, "11 (Donnerstag)")
Local $4_3_1 = _GUICtrlTreeView_AddChild($hSoSollsWerden, $4_3, "12 (Freitag)")
_GUICtrlTreeView_Expand($hSoSollsWerden)
EndFunc ;==>_SoSollsSein
$hGui = GUICreate("TestGUI", 470, 560)
GUISetBkColor(0xFFFBBB)
GUICtrlCreateLabel("So soll es aussehen...", 250, 20, 200, 30, $SS_CENTER)
GUICtrlSetFont(-1, 12, 800, 4)
GUICtrlCreateLabel("So ist es aktuell...", 20, 20, 200, 30, $SS_CENTER)
GUICtrlSetBkColor(-1, 0xBBBBBB)
GUICtrlSetFont(-1, 12, 800, 4)
_SoSollsSein()
$hTreeView = GUICtrlCreateTreeView(20, 50, 200, 500)
GUICtrlSetBkColor(-1, 0xBBBBBB)
GUICtrlSetFont(-1, 12)
_TreeView_Fahrtenbuch(); Diese Funktion soll mir das TreeView mit den Daten aus dem Array "$a_FahrtenbuchDaten" befüllen.
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $Gui_Event_Close
Exit
EndSwitch
WEnd
#EndRegion ####; Do not touch anything below this line ;-)))
Alles anzeigen
Das Problem ist, dass ich nicht weiss, wie ich die subitems der Tage den subitems der Monate zuordnen soll.
Kann mir jemand weiterhelfen?
MfG, Lo..