寻求有CkeckBox 的树形控件,如杀毒软件中选择路径的控件。
寻求有CkeckBox 的树形控件,如杀毒软件中选择路径的控件。 问题点数:20、回复次数:6Top
1 楼universe(孤帆)回复于 2002-06-01 13:32:50 得分 5
就是用的普通delphi自带的treeview即可
那个检查框用的是图标,你可以用几种图标来代替显示状态Top
2 楼zhangking(网眼-why100000.com)回复于 2002-06-01 13:55:55 得分 0
有没有真正实现该功能的控件啊?Top
3 楼taxi(当时明月在,曾照彩云归)回复于 2002-06-01 13:58:04 得分 0
用孤大爷推荐方法也很简单呀。Top
4 楼ehom(?!)回复于 2002-06-01 14:00:27 得分 0
找不到就自己写,VCL控件(treeview,CkeckBox)代码都可以看
这也需要现成就太偷懒了!:)Top
5 楼kyee(浪子阿鹏)回复于 2002-06-01 15:55:56 得分 15
直接用 TTreeView 和 TImageList 控件就行了,操作如下:
1. 在 ImageList1 中加三个图标,未选择,已选择,灰选择。
2. 设置 TreeView1.Images := ImageList1;
3. 在 TreeView1.OnClick 事件中写:
const
ImageIndex_NoChecked = 0; // 未选择
ImageIndex_IsChecked = 1; // 已选择
ImageIndex_GrayChecked = 2; // 灰选择
var
boolNeedGrayChecked: Boolean = False; // 是否需要灰选择
// TreeView1 的 OnClick 事件过程
procedure TForm1.TreeView1Click(Sender: TObject);
var
pointPos: TPoint;
nodeTemp: TTreeNode;
begin
GetCursorPos(pointPos);
pointPos := TreeView1.ScreenToClient(pointPos);
nodeTemp := TreeView1.GetNodeAt(pointPos.x, pointPos.y);
if nodeTemp = TreeView1.Selected then
case nodeTemp.ImageIndex of
ImageIndex_NoChecked:
if boolNeedGrayChecked then
nodeTemp.ImageIndex := ImageIndex_GrayChecked
else
nodeTemp.ImageIndex := ImageIndex_IsChecked;
ImageIndex_IsChecked:
nodeTemp.ImageIndex := ImageIndex_NoChecked;
ImageIndex_GrayChecked:
if boolNeedGrayChecked then
nodeTemp.ImageIndex := ImageIndex_IsChecked
else
nodeTemp.ImageIndex := ImageIndex_NoChecked;
end;
end;
以上三步即可实现你所需要的。
Top
6 楼kyee(浪子阿鹏)回复于 2002-06-01 15:57:19 得分 0
直接用 TTreeView 和 TImageList 控件就行了,操作如下:
1. 在 ImageList1 中加三个图标,未选择,已选择,灰选择。
2. 设置 TreeView1.Images := ImageList1;
3. 在 TreeView1.OnClick 事件中写:
const
ImageIndex_NoChecked = 0; // 未选择
ImageIndex_IsChecked = 1; // 已选择
ImageIndex_GrayChecked = 2; // 灰选择
var
boolNeedGrayChecked: Boolean = False; // 是否需要灰选择
// TreeView1 的 OnClick 事件过程
procedure TForm1.TreeView1Click(Sender: TObject);
var
pointPos: TPoint;
nodeTemp: TTreeNode;
begin
GetCursorPos(pointPos);
pointPos := TreeView1.ScreenToClient(pointPos);
nodeTemp := TreeView1.GetNodeAt(pointPos.x, pointPos.y);
if nodeTemp = TreeView1.Selected then
case nodeTemp.ImageIndex of
ImageIndex_NoChecked:
if boolNeedGrayChecked then
nodeTemp.ImageIndex := ImageIndex_GrayChecked
else
nodeTemp.ImageIndex := ImageIndex_IsChecked;
ImageIndex_IsChecked:
nodeTemp.ImageIndex := ImageIndex_NoChecked;
ImageIndex_GrayChecked:
if boolNeedGrayChecked then
nodeTemp.ImageIndex := ImageIndex_IsChecked
else
nodeTemp.ImageIndex := ImageIndex_NoChecked;
end;
end;
以上三步即可实现你所需要的。
Top
7 楼kyee(浪子阿鹏)回复于 2002-06-01 16:20:38 得分 0
把
if nodeTemp = TreeView1.Selected then
改为:
if (nodeTemp <> Nil) and (nodeTemp = TreeView1.Selected) then
Top




