www.pudn.com > dbtree.rar > Unit1.pas


unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls, DB, DBTables, ComCtrls, Grids, DBGrids, ExtCtrls, 
  DBCtrls, Mask; 
 
 
type 
  TForm1 = class(TForm) 
    TreeView1: TTreeView; 
    ImageList1: TImageList; 
    DataSource1: TDataSource; 
    DBEdit1: TDBEdit; 
    Label1: TLabel; 
    Label2: TLabel; 
    DBEdit2: TDBEdit; 
    Table1: TTable; 
    Label3: TLabel; 
    DBNavigator1: TDBNavigator; 
    Label4: TLabel; 
    DBEdit3: TDBEdit; 
    DBEdit4: TDBEdit; 
    function  GetFieldList: TStringList; 
    procedure FormCreate(Sender: TObject); 
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode); 
    procedure DataSource1StateChange(Sender: TObject); 
    procedure Table1AfterInsert(DataSet: TDataSet); 
    procedure Table1BeforeDelete(DataSet: TDataSet); 
    procedure Table1BeforeEdit(DataSet: TDataSet); 
    procedure Table1AfterDelete(DataSet: TDataSet); 
    procedure Table1AfterPost(DataSet: TDataSet); 
  private 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen } 
  end; 
 
var 
  Form1: TForm1; 
  FieldList: TStringList; 
 
implementation 
uses TreeFunc; 
 
{$R *.DFM} 
 
 
function TForm1.GetFieldList: TStringList; 
begin 
     FieldList.clear; 
     FieldList.add(Table1.fieldbyname('Country').asstring); 
     FieldList.add(Table1.fieldbyname('city').asstring); 
     FieldList.add(Table1.fieldbyname('Company').asstring); 
     Result := FieldList; 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
     FieldList := TStringList.create; 
 
     TreeView1.items.BeginUpdate; 
 
     Table1.first; 
     while not Table1.eof do 
     begin 
          TreeAddItem(TreeView1, GetFieldList, Table1.getBookmark, false); 
          Table1.next; 
     end; 
 
     FieldList.clear; 
     TreeView1.Alphasort; 
     TreeView1.items.Endupdate; 
 
//make first record selected: 
     TreeView1.items[2].selected := true; 
end; 
 
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); 
begin 
     Datasource1.enabled := Node.data <> nil; 
     if DataSource1.enabled then Table1.gotobookmark(node.data); 
end; 
 
procedure TForm1.DataSource1StateChange(Sender: TObject); 
var 
   ItemList: TStringList; 
   Node: TTreeNode; 
begin 
end; 
 
procedure TForm1.Table1AfterInsert(DataSet: TDataSet); 
begin 
     FieldList.clear; 
end; 
 
procedure TForm1.Table1BeforeDelete(DataSet: TDataSet); 
begin 
     GetFieldList; 
end; 
 
procedure TForm1.Table1BeforeEdit(DataSet: TDataSet); 
begin 
     GetFieldList; 
end; 
 
procedure TForm1.Table1AfterDelete(DataSet: TDataSet); 
var 
   CascadeDeleteLevel: Integer; 
begin 
     CascadeDeleteLevel := 0; 
     TreeDeleteItem(TreeView1, FieldList, CascadeDeleteLevel); 
end; 
 
procedure TForm1.Table1AfterPost(DataSet: TDataSet); 
begin 
     TreeView1.items.beginUpdate; 
 
     if FieldList.count > 0 then TreeDeleteItem(TreeView1, Fieldlist, 0); 
     TreeView1.selected := TreeAddItem(TreeView1, GetFieldlist, Table1.getbookmark, True); 
 
     TreeView1.items.endUpdate; 
end; 
 
end.