Hallo. Arbeite seit ein Paar Tagen an eine Lösung wie ich die "Warengruppen" in eine VirtualTreeView einlesenkann.
So Sieht meine Tabelle aus:
wg1-wg10 (10 Felder für maximal 10 Untergruppen) und eine id Feld des Datesnatzes.
So gehe ich vor:
Tabelle
Delphi-Quellcode:
Var
i:Integer;
L_Acc_value:
Packed array[0..99]
of Variant;
TreeData: TTreeData;
TestKnoten, Knoten,Knoten_alt,Unter_Knoten_alt: PVirtualNode;
begin
// Alle Einträge werden gelöscht!
VST.Clear;
//Größe von Eingabedaten werden übergeben
VST.NodeDataSize:=SizeOf(TTreeData);
//Begine die Knoten einzufügen
VST.BeginUpdate;
with q_wg
do
begin
Close;
Open;
First;
While not Eof
do
begin
//Hauptknoten! Hauptkategorien
If L_Acc_Value[0]<> Fields[0].Value
then
begin
TreeData.FCaption := Vartostr(Fields[0].Value);
Knoten:=AddVSTStructure(VST,
nil,TreeData);
Knoten_alt := Knoten;
end
// Falls in der Hauptkategorie eine weitere Unterkategorie dann wird die hier eingetragen!
else Knoten := Knoten_alt;
L_Acc_Value[0]:=Fields[0].Value;
//Unterknoten, Unterkategorien
For i:=1
to FieldCount-1
do
begin
// Nicht Null, nicht leer, Nicht gleich!
if (L_Acc_Value[i]<> Fields[i].Value)
And (
not VarIsNull(Fields[i].Value))
And (Fields[i].Value <> '
')
then
begin
// Nur Zur Kontrolle!!
Unter_Knoten_alt := Knoten;
TreeData.FCaption := Vartostr(Fields[i].Value);
Knoten:=AddVSTStructure(VST,Knoten,TreeData);
end
else
begin
IF (L_Acc_Value[i] = Fields[i].Value)
And (
not VarIsNull(Fields[i].Value))
And (Fields[i].Value <> '
')
Then
begin
// Showmessage(IntToStr(Knoten.Index));
Knoten := Unter_Knoten_alt;
end;
end;
L_Acc_Value[i]:=Fields[i].Value;
end;
//Nächsten Datensatz
next;
end;
end;
//Beende die Knoten einzufügen
VST.EndUpdate;
//Sortierung, die DS werden per SQL sortiert!
//Vst.SortTree(1,sdAscending,True);
end;
So sieht das aus wenn das Fertig ist.
Fehler ist in
Hardware-Mäuse-Com1-Schwarz
Hardware-Mäuse-PS2-Schwarz
Ich bin langsam am Ende, kann mir bitte jemand helfen.