全部博文(788)
分类:
2009-01-04 16:55:16
例如我在主窗口加载树Treeview1后,有一个节点为ss,我想在另一个窗口更改数据库内容,使对应的节点名称改为tt。
怎么同步显示呢?
请教!
马上给分!
如果另一个窗口是远端另一个客户端的话,哪么简单的办法只能是定时刷
如果另一个窗口也是本地的话 可以统一修数据更新接口
如用 ModifyXXX 函数来改数据
在这个函数里先改库再刷新UI
要自动做? 俺不知。。。。
uses
DBCtrls;
var
F: TFieldDataLink;
//formcreate
begin
F := TFieldDataLink.Create;
F.Control := Self;
F.DataSource := DataSource1;//连接数据库的DATASOURCE;
F.FieldName := '要变化的字段';
F.OnDataChange := DataChangeEvent;
end;
procedure TForm1.DataChangeEvent(Sender: TObject);
begin
ss.Text := F.Field.AsString;
end;
//更改一下
procedure TForm1.DataChangeEvent(Sender: TObject);
begin
F.DataSet.Locate('字段' '值', []); //数据库要先定位到当前树节点所对应的记录;
ss.Text := F.Field.AsString;
end;
做个记号~~~
数据改变后当然可以去找到这个节点把名称修改,但是为什么不这样做?就是写一个初始化treeview的过程,在过程中先清除treeview然后从数据库加载数据,在每次修改数据后调用这个初始化过程即可。我一直是这样做的,在一个项目中对于频繁使用或者比较繁琐的代码要尽量写成过程或者函数,这样使用和修改起来非常方便!!!
树的每一个接点有个属性pointer,你用这个Pointer属性记录和数接点名称对应的ID号+Node的组合码,然后每次更新时候利用这个组合码和ID直接查询到Node会很方便。
Node.Data 可以保存一个指针,可以在这里做点文章