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;
  第三,上面的代码解决的是状态图标转换的问题,那如何解决在鼠标单击和键盘选择之后就改变状态呢?下面给出实现代码:

作者:小刀轻舞    责编:豆豆技术应用

正在加载评论...