您的位置:首页 > 其它

TcxTreeList的使用心得。

2006-07-26 18:15 507 查看
Dennica
Можно и так. Только нужно проверку поставить на пустой ATreeList. И нужно все таки понять для чего Data.
 
И вообще я не пойму на кой тебе при такой теме TreeList ?
 
while not Eof do begin  
  with tlAvailable.Add do begin  
    Values[0] := FieldValues['id'];  
    Values[1] := FieldValues['name'];  
  end;  
  Next;  
end;  
 
Add, Add ... - где построение дерева, где родитель, где дочерние узлы? Используй грид и не морочь голову.
 
Дерево строится где-то таким образом
 
function GetNodeFromData(Data: Integer): TcxTreeListNode;
var
  Node: TcxTreeListNode;
begin
  Result := nil;
  with TreeList do
  begin
    if Count = 0 then
      Exit;
    Node := Items[0];
    while Assigned(Node) do
    begin
      if Integer(Node.Data) = Data then
      begin
        Result := Node;
        Break;
      end;
      Node := Node.GetNext;
    end;
  end;
end;
 
procedure LoadTree;
var
  Node: TcxTreeListNode;
begin
  with MainDM, TreeList do
  begin
    Node := Add(nil,Pointer(0));
    Node.Texts[0] := 'Содержание';
    with TpFIBDataSet.Create(nil) do
    try
      Database := dbBase;
      Transaction := trRd;
      SQLs.SelectSQL.Add('SELECT * FROM Таблица ORDER BY ID');
      Active := True;
      while not Eof do
      begin
        Node := AddChild(GetNodeFromData(FieldByName('Родительский ID').AsInteger),
          Pointer(FieldByName('ID').AsInteger));
        Node.Texts[0] := FieldByName('Текст Нода').AsString;
        Next;
      end;
      Active := False;
      GotoBOF;
      FocusedNode.Expand(False);
    finally
      Free;
    end;
  end;
end;
function GetNodeFromNodeText(Text: String): TcxTreeListNode;

var
  Node: TcxTreeListNode;
begin
  Result := nil;
  with TreeList do
  begin
    if Count = 0 then
      Exit;
    Node := Items[0];
    while Assigned(Node) do
    begin

",1]
);
D(["mb","
      begin
        Result :/u003d Node;
        Break;
      end;
      Node :/u003d Node.GetNext/n;
    end;
  end;
end; 
",1]
);
D(["mb","/n/n",0]
);
D(["ce"]);

//-->
      if Node.Texts[0] = Text then

      begin
        Result := Node;
        Break;
      end;
      Node := Node.GetNext ;
    end;
  end;
end; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息