我正在使用复选框创建Treeview.我想出了如何切换到nodes(procedure ToggleTreeViewCheckBoxes)的复选框.我添加了TImageList带复选框位图的组件并更改StateIndex了OnClicktreeview事件.它工作正常,但我想添加其他行为.
我创建了treeview结构作为示例:
根1
父1(复选框)
父2(复选框)
根2
父1(复选框)
父2(复选框)
下面我附上你准备的示例代码,创建了treeview并添加了节点,复选框.
unit TreeViewCheckboxes;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.ImageList, Vcl.ImgList,
Vcl.ComCtrls;
type
TForm5 = class(TForm)
ImageList1: TImageList;
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
{ Private declarations }
procedure ToggleTreeViewCheckBoxes(Node:TTreeNode; cUnChecked, cChecked: Integer);
public
{ Public declarations }
end;
var
Form5: TForm5;
const
cStateUnCheck = 1;
cStateChecked …Run Code Online (Sandbox Code Playgroud) 我正在寻找禁用适当节点的方法。
假设我创建了如下简单的树视图结构:
到目前为止,我已经找到了解决方法,但仍然效果不佳。我使用OnChanging事件处理程序:
procedure TForm1.TreeViewChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
if (Node.Text = 'Parent 1') or (Node.Text = 'Child 1') then
AllowChange := False;
end;
Run Code Online (Sandbox Code Playgroud)
它有效,因为我无法单击该节点,但问题是,以这种方式“禁用”节点后,Parent 1和Child 1节点的颜色与其他节点相同。有什么办法可以改变这个节点的颜色(灰色)吗?或者也许您知道禁用 TTreeView 组件中的节点的另一种方法?