小编ast*_*ack的帖子

带有复选框的Treeview - 添加复选框行为

我正在使用复选框创建Treeview.我想出了如何切换到nodes(procedure ToggleTreeViewCheckBoxes)的复选框.我添加了TImageList带复选框位图的组件并更改StateIndexOnClicktreeview事件.它工作正常,但我想添加其他行为.

我创建了treeview结构作为示例:

  • 根1

    • 父1(复选框)

      • 儿童1(复选框)
      • 孩子2(复选框)
    • 父2(复选框)

      • 儿童1(复选框)
      • 孩子2(复选框)
  • 根2

    • 父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)

delphi checkbox treeview

4
推荐指数
1
解决办法
5258
查看次数

禁用并更改 Treeview 中节点的颜色

我正在寻找禁用适当节点的方法。

假设我创建了如下简单的树视图结构:

  • 父级 1 (禁用)
  • 家长2
    • 儿童 1
    • 儿童 2 (禁用)

到目前为止,我已经找到了解决方法,但仍然效果不佳。我使用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 1Child 1节点的颜色与其他节点相同。有什么办法可以改变这个节点的颜色(灰色)吗?或者也许您知道禁用 TTreeView 组件中的节点的另一种方法?

delphi treeview nodes disabled-control

3
推荐指数
1
解决办法
5297
查看次数

标签 统计

delphi ×2

treeview ×2

checkbox ×1

disabled-control ×1

nodes ×1