我想让TreeView组件的TreeNode增加一个Integer域

havelife 2004-09-01 01:30:04
我增加这个域的目的是对于每个TreeNode都保存数据库中相应的关键字,以便在操作TreeView的时候能迅速定位到数据库中的某条记录,从而使得操作TreeView中的结点时,对数据库的增加、修改、删除、查询也变得很容易。
请问懂得VCL组件设计的朋友们,我应该怎样实现我的这个想法?
问题也许很简单,但请帮助我一下。多谢了
...全文
178 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myy 2004-09-01
  • 打赏
  • 举报
回复
如果就一个Integer的话,record都可以不定义,node.Data本身就是一个指针类型,与Integer一样4字节,把它当Integer用就行了。
wilowind 2004-09-01
  • 打赏
  • 举报
回复
同意 luke5678(奇异)
另外,最好把这段扩展并单独放在一个类里.
type
P = ^R;
R = record
i:integer; //这个就是你要带的整数
end;
lwk_hlj 2004-09-01
  • 打赏
  • 举报
回复
其实,node.Data中你可以存放任何你想存放的东西,为何还要新做呢?
budded 2004-09-01
  • 打赏
  • 举报
回复
TCheckTreeNode = class(TTreeNode)
private
{ Private declarations }
FChecked: Boolean;
procedure SetChecked(const Value: Boolean);
public
{ public declarations }
property Checked: Boolean read FChecked write SetChecked;
end;

// TCheckTreeView = Class(TTreeView)
procedure TCheckTreeView.CreateCheckNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TCheckTreeNode;
end;

使用:
var
Node: TCheckTreeNode;
begin
Node := TCheckTreeNode(TreeView.Items.GetFirstNode);
Node.Checked := False;
end;
luke5678 2004-09-01
  • 打赏
  • 举报
回复
type
P = ^R;
R = record
i:integer; //这个就是你要带的整数
end;

var
pt:P;
lt:TList;

...

//增加2个带有integer域的结点
procedure TForm1.Button1Click(Sender: TObject);
begin
lt := TList.Create;
new(pt);
pt.i := 1; //integer域里的值
lt.Add(pt);
TreeView1.Items.AddChildObject(nil,'aa',lt.Items[0]);
new(pt);
pt.i := 2; //
lt.Add(pt);
TreeView1.Items.AddChildObject(nil,'aa',lt.Items[1]);
end;

//显示每个结点integer域里的值
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if TreeView1.Selected = nil then Exit;
ShowMessage(IntToStr(P(TreeView1.Selected.Data)^.i));
end;



以上代码调试通过
luke5678 2004-09-01
  • 打赏
  • 举报
回复
TreeView1.Items.AddObject();
就可以实现

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧