我的DBTreeView--TreeView直接连接数据表[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 nineflowers 的 blog

认真研究如下代码:dbtreeview--treeview直接连接数据表

unit unit1;

interface

uses
  windows, messages, sysutils, classes, graphics, controls, forms, dialogs,
  stdctrls, db, dbtables, comctrls, grids, dbgrids, extctrls,
  dbctrls, mask, imglist;


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;

    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
    function  getfieldlist: tstringlist;
    { private-declarationen }
  public
    { public-declarationen }
  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;//forbid treeview update
     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.
///------------------------
unit treefunc;

interface

uses
  windows, messages, sysutils, classes, graphics, comctrls, db, forms, dialogs;

function  treefinditem(sender: ttreeview; nodeitem: ttreenode; name: string): ttreenode;

本文关键:我的DBTreeView--TreeView直接连接数据表
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top