TreeView中一个节点怎样表示?(100分)

  • 主题发起人 主题发起人 juexing
  • 开始时间 开始时间
J

juexing

Unregistered / Unconfirmed
GUEST, unregistred user!
如下所说,+Tlable(treeview1.selected.data).caption)表示我所点击的节点,但是现在类型不一样,是lable型的,而我Access数据库里字段是文本型的。我应该怎样改这里可使数据类型一致?
sql.add('select * from ClassInfo A inner join Tree B on A.分类名=B.分类名')
sql.add('where A.分类名='+Tlable(treeview1.selected.data).caption);
 
sql.add('select * from ClassInfo A inner join Tree B on A.分类名=B.分类名')
sql.add('where A.分类名='''+Tlable(treeview1.selected.data).caption+'''');
 
sql.add('where A.分类名='+#39+Tlable(treeview1.selected.data).caption)+#39;
 
你为什么不把treeview中选中的节点的文本拿出来做条件呢?这不就解决问题了嘛?
 
直接使用treeview1.selected.Caption不可以嘛?
你TreeNode上是不是要放置一个文本型的值?直接可以使用Caption啊。

如果你除了Caption还想扩展其他多种类型参数,最好的办法建议这样:
TMyTreeNode = class(TTreeNode)
private
FMyProp: string;
FIntProp: Integer;
public
property MyProp: string read FMyProp write FMyProp;
property IntProp: Integer read FIntProp write FIntProp;
end;

然后在TreeView的事件:
OnCreateNodeClass
==(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
中按下面的方式使用:
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
这样你定义的类就可以被TreeNode调用,所有创建的TreeNode其实是你定义的TMyTreeNode。
 
treeview1.selected.data是一个指针,你必须给它写对象/指针地址。访问时要进行类型转换
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部