Тема: treeView
Показать сообщение отдельно
  #7  
Старый 27.03.2010, 15:59
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Подмигивание

Вообщем я реализовал следующим образом
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i1,i2,i3,i4,i5:integer;
    j1,j2,j3,j4:integer;
    k2,k3,k4,k5:integer;
    rc1,rc2,rc3,rc4:integer;
    s:string;

begin //построение дерева
TreeView1.Items.BeginUpdate;//запрет обновления
TreeView1.Items.Clear;   //очистка списка
k2:=0;k3:=0;k4:=0;k5:=0;
Query1.Active:=true; //подключение баз
Query1.First;

//--------------Первый уровень-------------
Query1.Filtered:=true;
rc1:=Query1.RecordCount;
for i1:=1 to rc1 do
   begin // ++i1
   s:=Query1PREDPRIATIE.AsString;
   TreeView1.Items.Add(nil,s);
   j1:=i1+k2+k3+k4+k5;
//--------------Второй уровень-------------

   rc2:=Query2.RecordCount;
   if rc2>0 then
      begin  // ++rc2
      Query2.First;
      for i2:=1 to rc2 do
       begin    //  ++i2
         s:=Query2CEX.AsString;
         TreeView1.Items.AddChild(TreeView1.Items.Item[j1-1],s);
         k2:=k2+1;
         j2:=i1+k2+k3+k4+k5;Query2.Next;
       end;
   //--------------Третий уровень-------------

   rc3:=Query3.RecordCount;
   if rc3>0 then
     begin  // ++rc3
      Query3.First;
      for i3:=1 to rc3 do
         begin    //  ++i3
         s:=Query3OTDEL.AsString;
      // if QuStrName.AsString<>'' then s:=s+' ('+QuStrName.AsString+')';
         TreeView1.Items.AddChild(TreeView1.Items.Item[j2-1],s);
         k3:=k3+1;
         j3:=i1+k2+k3+k4+k5;Query3.Next;
         End;
//--------------Четвертый уровень-------------

     rc4:=Query4.RecordCount;
     if rc4>0 then
      begin  // ++rc4
      Query4.First;
      for i4:=1 to rc4 do
       begin    //  ++i4
       s:=Query4FAMILIA.AsString;
       TreeView1.Items.AddChild(TreeView1.Items.Item[j3-1],s);
       k4:=k4+1;
       j4:=i1+k2+k3+k4+k5;Query4.Next;
//     Query1.Next;  Query2.Next;Query3.Next;
       end;
      end;
     end;
 End;

end;

TreeView1.Items.EndUpdate;//разрешение обновления
Только выводит он не все( цех раскрывается только 1 (последний) ) отдел от последнего цеза нормально выводит сотрудников

подскажите где ошибся
Ответить с цитированием