[Delphi] TreeView i powtarzalność itemów + data

0

Witam wszystkich.

Mam pewien problem związany z komponentem TreeView. Na formie, oprócz TreeView, mam przycisk. Chciałbym, aby po wciśnięciu przycisku do drzewka dodawała się aktualna data, z tym że lata, miesiące i dni byłyby rozdzielane na itemy i poditemy.

Wyglądałoby to mniej więcej tak:

|--2006
|--Lipiec
|--14
|--2005
|--Styczeń
|--23

Jednak oprócz tego rozdzielania, po wciśnięciu przycisku, program sprawdzał by, czy np. dany rok już istnieje w drzewie. Jeżeli by nie istniał to tworzy tak jak to jest podane wyżej, jeśli jednak dany rocznik znajdowałby się w drzewie to dodawałby datę do tego roku. Analogicznie byłoby z miesiącami.

Czyli powiedzmy, że drzewo mogło by wyglądać po jakimś czasie tak:

|--2006
|--Lipiec
|--14
|--24
|--Sierpień
|--01
|--2005
|--Styczeń
|--23

Mam nadzieję, iż swój problem przedstawiłem dość jasno i problemu ze zrozumieniem tego postu mieć nie będziecie.

0

Po kolei (for i := ...) sprawdzaj elementy głównego drzewa, czy zawierają rok istniejący. Jeżeli tak, dodawaj do nich inne, jak nie stwórz nowy element i dodawaj do niego.

0

No tak, ale ja również chcę, by jak sprawdzi np, że rok już istnieje to żeby sprawdzał, czy w tym roku już jest taki mięsiąc, a w miesiącu, czy jest taki dzień. I żeby ewentualnie dodawał do już istniejących miesięcy nieistniejące dni.

0

To robisz tak:

Szukasz odpowiedniego roku, jak nie ma dodajesz. Zapamiętujesz jaki to element drzewa i w jego podelementach szukasz odpowiedniego miesiąca, jak nie ma dodajesz. Zapamiętujesz miesiąc i w jego podelementach szukasz dni, jak nie ma dodajesz... :)

Jeżeli masz jakieś pytania - służę radą.

0

Próbuję i próbuję, ale jakoś nic nie mogę wykombinować :-( .
Jak ma wyglądać to zapamiętanie elementu drzewa? I czy za każdym razem mam szukać pętlą (tz. rok - pętla, w miesiącach - pętla, a potem w dniach pętla)?
Do tej pory, używając TreeView, nie miałem potrzeby korzystania z warunku na powtarzanie się jakiegoś itema, ale w tym przypadku to można dostrzec brak wiedzy na ten temat z mojej strony :/

0

Aktualnie nie mam Delphi zainstalowanego... Ale kiedyś robiłem archiwum (co prawda oparte na VirtualTreeView, ale chyba powinno działac podobnie) i dodawałem tak:

var
node: ttreenode;
i: Integer;
begin
node := nil;
for i := 0 to TreeView1.Items.Count -1 do
 if TreeView1.Items[I].Caption = Rok then
   Node := TreeView1.Items[i];
if Node = nil then
  Node := TreeView1.AddItem;

Później tak samo na Node, ale z miesiącem... Nie wiem jak bardzo ten kod odpowiada możliwościom TreeView, ale spróbuj czegoś takiego. :)

0

Wielkie, wielkie, wielkie dzięki [!!!] . Bardzo mi pomogłeś w rozwiązaniu mojego problemu :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1