Delphi控件的使用经验

吴泽平(河北省任丘市)

---- 一.Delphi中树型控件的使用技巧

---- 我们都知道,开发者主要用Delphi来开发数据库管理软件,正因如此,树型控件的使用最好与数据库联系起来。Delphi提供了一个树型控件TTreeView,可以用来描述复杂的层次关系。

---- 1.树节点信息的存储和加载

---- 常用的方法是用树控件的 LoadFromFile和SavetoFile方法,来实现树控件和文件之间的交互;或用Assign方法实现树控件和DBMemo,也就是和数据库间的交互。该方法的优点是编程相对简单,缺点是树控件的实际节点数可能会很大,对于"大树",每次加载和存储的数据量会加大,将降低速度,增大系统开销,造成数据冗余。另一种方法,就是只在树上产生"看得见"的节点,没有专门记录全部树节点结构的文件或数据库字段,而将树节点结构分散在数据库的每一个记录中。

---- 具体方法是:创建一个数据库,字段根据实际业务而定,其中必然有一个字段的信息将在树型控件的节点上显示,另外还要一个字段来保存节点的惟一标识号,该标识号由长度相等的两部分组成,前段表示当前节点的父节点号,后段表示当前节点的节点号,此标识号相当于一个"链表",记录了树上节点的结构。该方法的优点:用户操作"大树"时,一般不会展开所有的节点,而只用到有限的一部分,同时只能从树根一层一层地展开,该法只在树上产生"看得见"的节点,所以,存储和加载"大树"的速度快,数据量小,系统开销和数据冗余较小。缺点:编程较复杂,但可以结合该方法编成一个新的树控件,将大大提高编程效率。值得注意的是,ID号必须惟一,所以在编程中如何合理产生ID尤为重要。

---- 2.数据库结构示例

---- 创建一个数据库,为简化程序,我只创建两个数据库字段,定义如下:

字段名    类型    长度
Text        C    10
LongID    C    6

---- LongID字段实际上由两段组成,每一段3位,LongID只能表示1000条记录。将LongID定义为索引字段,存为c:/testtree/tree.dbf。编辑该DBF文件,新建一条记录,Text字段设为TOP,LongID字段设为"000"(3个"0"前为三个空格)。
---- 3.创建演示程序

---- 在Form1上放置TreeView1、Table1、PopupMenu1、Edit1、Edit2。TreeView1的PopupMenu属性设为PopupMenu1;Table1的DataBaseName属性设为c:/testtree,TableName属性设为tree.dbf,IndexFieldNames属性设为LongID;为PopupMenu1加选单项Add1和Del1,Caption分别为Add和Del;Edit1用来输入新节点的Text属性值,Edit2用来输入新节点的3位ID号。存为c:/testtree/treeunit.pas和c:/testtree/testtree.dpr。在treeunit.pas的Type关键字后加入一行:Pstr:^string;{Pstr为字符串指针} 为Form1的OnCreate事件添加代码:

procedure TForm1.FormCreate(Sender: TObject);
var p:Pstr;Node:TTreeNode;
begin
with Table1,Treeview1 do
begin
open;
first;
new(p);{为指针p分配内存}
p^:=FieldByName(′LongID′).AsString;
Node:=Items.AddChildObject(nil,FieldByName
(′Text′).AsString,p);
if HasSubInDbf(Node) then Items
.AddChildObject(Node,′ ′,nil);{有子节点则加一个空子节点}
end;
end;

---- HasSubInDbf为自定义函数,自变量为Node,检查节点Node有无子节点,有则返回True,反之返回F
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
*********************************************************************最新更新: 1、提高了拖拉的速度。不会出现闪烁。 2、同工艺之间可以换机台加工,同工艺机台用同一种颜色来显示。 3、可以显示完成度。********************************************************************该甘特图控件纯属个人开发,使用DELPHI开发。1、该控件主要用于生产排程或计划用。2、该甘特图可以自由拖拉更改时间,时间轴可以自由缩放,显示不同的界面效果。3、可以自由设置3D、更改甘特图大小,是否让用户移动甘特图等效果属性设置。 gant3d,gantchanged,gantmoved这三个属性来控制。4、该甘特图不用设置颜色,会随机获取颜色,并把相同模号的颜色设置为一样。 当用鼠标点击一个零件时,该套模所有的零件都会变成红色,这个颜色是唯一的, 方便用户查看该模的进度。5、该甘特图开发周期短,不可避免有很多不如意的地方希望大家提出宝贵的意见。6、该甘特图是本人研究成果,暂时只能给出试用版出来。demo里显示的数据是几种工序的机台信息,大家可以用排程软件给这些工序排程来测试效果。排程软件的 用户名是admin,密码是1,登陆后就可以进行排程操作。大家可以进入我的空间下载最新的甘特图控件!http://cxing1985.ys168.com/作者:星火燎燃QQ:251276845 手机:13632994209E-mail:cxing1985@126.com.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值