Delphi中为TreeView添加单选和复选框
http://tech.ddvip.com 2007年03月20日 社区交流
本文详细介绍Delphi中为TreeView添加单选和复选框

首先,我们在Win32面板上选择ImageList组件,设置它的StateImages属性,包括两种状态的图标,一种是选中状态,另一种是未先中状态。
其次,我们调用ToggleTreeView过程(实现方法见后文),实现在鼠标单击和键盘选择的状态下改变状态图标的功能。
ToggleTreeView过程实现代码如下:
procedure ToggleTreeViewCheckBoxes(
Node :TTreeNode;
cUnChecked, //CheckBox未选中状态
cChecked, //CheckBox选中状态
cRadioUnchecked, //RadioButtion未选中状态
cRadioChecked :integer); // RadioButtion选中状态
var
tmp:TTreeNode;
begin
if Assigned(Node) then
begin
//如果当前是未选中状态则变为选中状态
if Node.StateIndex = cUnChecked then
Node.StateIndex := cChecked
//如果当前是选中状态则变为未选中状态
else if Node.StateIndex = cChecked then
Node.StateIndex := cUnChecked
else if Node.StateIndex = cRadioUnChecked then
begin
tmp := Node.Parent;
if not Assigned(tmp) then
tmp := TTreeView(Node.TreeView).Items.getFirstNode
else
tmp := tmp.getFirstChild;
while Assigned(tmp) do
begin
if (tmp.StateIndex in
[cRadioUnChecked,cRadioChecked]) then
tmp.StateIndex := cRadioUnChecked;
tmp := tmp.getNextSibling;
end;
Node.StateIndex := cRadioChecked;
end; // if StateIndex = cRadioUnChecked
end; // if Assigned(Node)
end; 第三,上面的代码解决的是状态图标转换的问题,那如何解决在鼠标单击和键盘选择之后就改变状态呢?下面给出实现代码:
作者:小刀轻舞 责编:豆豆技术应用
正在加载评论...