Sonsuz Master-Detail bağlantıyı TreeView'de göstermek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Sonsuz Master-Detail bağlantıyı TreeView'de göstermek

Mesaj gönderen kahraman1285 »

mrb.

Sirano
Parent (integer)
Num (integer)
Adi
..

şeklinde bir tablom var bu tablodaki verileri parent ve child ilişkisine bağlı olarak bir treeview de göstermek istiyorum.Yazdığım kodda sadece 3 basamağa kadar gösterme işlemi yapabildim bu işlemi sonsuz yani kullanıcının istediği kadar alt basamağa sahip bir master - detay ilişkisini treeview'de nasıl gösterebilirim.
İşlemi bir while döngüsü içine eklemeye çalıştım fakat yapamadım.tavsiyelerinizi bekliyorum.
teşekkürler...

Yazdığım kod:
Öncelikle parent sütunu boş olanları tespit edip treeview'e ekliyorum daha sonrada bağlantılı bilgileri treeviewe ekliyorum.

Kod: Tümünü seç

procedure TfrmKarttaAra.AgacGoster(Sirano:integer);
var
i,Yer:integer;
ArananNum:string;
Agac:TTreeNode;
begin
try
   Tree.Items.Clear;
   with Tree.Items do
   begin


   with qryAgac do
   begin
     close;
     SQL.Clear;
     SQL.Add('select sira,num,parent,adi from kart');
     SQL.Add('where sira=:sirano');
     ParamByName('sirano').Value:=SiraNo;
     open;
     first;
   end;
      while not (qryAgac.Eof) do
      begin
        Agac:=Add(nil,IntToStr(qryAgacNUM.Value) + '-' + qryAgacADI.Value);
        qryAgac.Next;
      end;

      for i := 0 to Tree.Items.Count-1 do
        begin
           Yer:=pos('-',Tree.Items.Item[i].Text);
           ArananNum:=copy(Tree.Items.Item[i].Text,0,yer-1);
           with qryAgac do
            begin
              close;
              SQL.Clear;
              SQL.Add('select sira,num,parent,adi from kart');
              SQL.Add('where parent=:numara');
              ParamByName('numara').Value:=ArananNum;
              open;
              first;
            end;
           while not (qryAgac.Eof) do
            begin
              Agac:=Tree.Items.Item[i];
              Agac:=Addchild(Agac,IntToStr(qryAgacNUM.Value) + '-' + qryAgacADI.Value);
              qryAgac.Next;
            end;
        end;

        for i := 1 to Tree.Items.Count-1 do //en alt uniteyi bulabilmek için
        begin
           Yer:=pos('-',Tree.Items.Item[i].Text);
           ArananNum:=copy(Tree.Items.Item[i].Text,0,yer-1);
           with qryAgac do
            begin
              close;
              SQL.Clear;
              SQL.Add('select sira,num,parent,adi from kart');
              SQL.Add('where parent=:numara');
              ParamByName('numara').Value:=ArananNum;
              open;
              first;
            end;
           while not (qryAgac.Eof) do
            begin
              Agac:=Tree.Items.Item[i];
              Agac:=Addchild(Agac,IntToStr(qryAgacNUM.Value) + '-' + qryAgacADI.Value);
              qryAgac.Next;
            end;
        end;

   end;
except on E:Exception do
     raise Exception.CreateFmt('Ağaç Görünümü Oluşturulamadı.'+#13+'Hata Mesajı : ' +
      '%s',[E.Message])

end;
Cevapla