type
    PViewItem=^ViewItem;
    ViewItem=record
    DataSet:TDataSet;
    Field:TField;
end;var
    i:Integer;
    Root:TTreeNode;
    NewItem:PViewItem;
begin
    try
        if not DataSet.Active then exit;
        Root:=m_tvDataSet.Items.Add(nil,DataSet.Name);
        for i:=0 to DataSet.FieldCount -1 do
        begin
            new(NewItem);
            NewItem^.DataSet :=DataSet;
            NewItem^.Field  :=DataSet.Fields[i];
            m_tvDataSet.Items.AddChildObject(Root,DataSet.Fields[i].DisplayName,NewItem );
        end;
    except
    end;