Hallo,
ich habe nun ein wenig gebastelt und habe die Treeview auch fast hinbekommen.
Ein Schönheitsfehler ist aber vorhanden.
Siehe Bild
Der gerahmte Bereich ist doppelt und die Unterkategorie stimmt nicht. Alle anderen Positionen stimmen.
Hier der Quelltext:
Delphi-Quellcode:
procedure Tf_treeview.Button1Click(Sender: TObject);
var MyTreeNode1 : TTreeNode;
icat : integer;
begin
with tv.Items do
begin
clear;
// 1. Hauptnode mit CHildnode setzen--------------------------------------------------------------
q_hauptkategorien.Close;
//1.Hauptkategorie
q_hauptkategorien.Open;
//Liefert den Namen der Kategorie über Funktion GetCategoryName
GetCategoryName(q_hauptkategorien.FieldByName('category_child_id').AsInteger);
//----------------------------------------------------------------------------------------
//Eintrag in Treeview
mytreenode1 := Add(nil, q_kategorie_name.FieldByName('category_name').AsString);
//Unterkategorien der ersten Hauptkategorie
q_unterkategorien.Close;
q_unterkategorien.ParamByName('category_parent_id').AsInteger := q_hauptkategorien.FieldByName('category_child_id').AsInteger;
q_unterkategorien.open;
while not q_unterkategorien.eof do
begin
//Liefert den Namen der Kategorie
q_kategorie_name.Close;
q_kategorie_name.parambyname('category_id').AsInteger := q_unterkategorien.FieldByName('category_child_id').AsInteger;
q_kategorie_name.Open;
//Eintrag der Unterkategorien in die TreeView
AddChild(mytreenode1, q_kategorie_name.FieldByName('category_name').AsString);
q_unterkategorien.Next;
end;
//-----------------------------------------------------------------------------------------------}
for icat := 1 to Count - 1 do
begin
//Liefert weitere Hauptkategorien und Unterkategorien
while not q_hauptkategorien.Eof do
begin
//Weitere Hauptkategorien in der TreeView anzeigen
q_kategorie_name.Close;
q_kategorie_name.parambyname('category_id').AsInteger := q_hauptkategorien.FieldByName('category_child_id').AsInteger;
q_kategorie_name.Open;
Item[icat].Text := q_kategorie_name.FieldByName('category_name').AsString;
mytreenode1 := Add(nil,item[icat].Text );
//-------------------------------------------------------------
//Unterkategorien der weiteren Hauptkategorien in Treeview anzeigen
q_unterkategorien.Close;
q_unterkategorien.ParamByName('category_parent_id').AsInteger := q_hauptkategorien.FieldByName('category_child_id').AsInteger;
q_unterkategorien.open;
//Liefert den Namen der Kategorie
while not q_unterkategorien.Eof do
begin
q_kategorie_name.Close;
q_kategorie_name.parambyname('category_id').AsInteger := q_unterkategorien.FieldByName('category_child_id').AsInteger;
q_kategorie_name.Open;
//Eintrag der Unterkategorie in die TreeView
AddChild(mytreenode1, q_kategorie_name.FieldByName('category_name').AsString);
q_unterkategorien.Next;
end;
q_hauptkategorien.Next;
end;
end;
end;
end;
Vielleicht hat ja jemand einen Tipp was ich da falsch mache.
LG
ROland