Thema: Treeview

Einzelnen Beitrag anzeigen

roland9999

Registriert seit: 4. Mär 2012
23 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Treeview 1. Hauptnode doppelt und falsche Unterkategorie

  Alt 10. Mär 2012, 14:26
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
Miniaturansicht angehängter Grafiken
treeview2.jpg  
Roland
  Mit Zitat antworten Zitat