• 学习 TTreeView [14] StateIndex(状态图标)、OverlayIndex(叠加图标)


    先给 ImageList1 添加图标如下:



    关于 OverlayIndex 的提示:
    在给一个节点指定 OverlayIndex 以前, 需要先用 ImageList1.Overlay 指定可用的 OverlayIndex 号.

    测试效果图:


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, ImgList, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        ImageList1: TImageList;
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
        procedure Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
        procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      node: TTreeNode;
    begin
      {指定 ImageList}
      TreeView1.Images      := ImageList1;
      TreeView1.StateImages := ImageList1;
    
      {设定 OverlayIndex, 最多 4 个}
      ImageList1.Overlay(3,0); {参数1是 ImageList 中的序号; 参数2是指定可选的 OverlayIndex}
      ImageList1.Overlay(4,1);
      ImageList1.Overlay(5,2);
      ImageList1.Overlay(6,3);
    
      Label1.Caption := 'StateIndex:';
      Label2.Caption := 'OverlayIndex:';
    
      Edit1.Text := '-1';
      Edit2.Text := '-1';
    
      Button1.Caption := '初始化';
    
      {给 TreeView1 填充}
      with TreeView1 do begin
        Align := alLeft;
        Items.Add(nil, 'AAA');
        Items.Add(nil, 'BBB');
        Items.Add(nil, 'CCC');
        Items.Add(nil, 'DDD');
        Items.Add(nil, 'EEE');
        Items.AddChild(Items[4], '111');
        Items.AddChild(Items[4], '222');
        Items.AddChild(Items[4], '333');
        Items.AddChild(Items[4], '444');
      end;
    
      {指定图标状态}
      for node in TreeView1.Items do
      begin
        node.ImageIndex := 0;    {默认图标为第 0 个}
        node.SelectedIndex := 1; {选择图标为第 1 个}
        node.StateIndex := -1;   {状态图标暂无}
      end;
    end;
    
    {Edit1 控制 StateIndex}
    procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    var
      c: Char;
      edit: TEdit;
    begin
      edit := TEdit(Sender);
      c := Chr(Key);
      if c in ['0'..'6'] then edit.Text := c else edit.Text := '-1'; {字符限制}
    
      TreeView1.Selected.StateIndex := StrToInt(edit.Text);          {作用于 TreeView}
    end;
    
    {Edit2 控制 OverlayIndex}
    procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    var
      c: Char;
      edit: TEdit;
    begin
      edit := TEdit(Sender);
      c := Chr(Key);
      if c in ['0'..'3'] then edit.Text := c else edit.Text := '-1'; {字符限制}
    
      TreeView1.Selected.OverlayIndex := StrToInt(edit.Text);        {作用于 TreeView}
    end;
    
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      Edit1.Text := IntToStr(Node.StateIndex);
      Edit2.Text := IntToStr(Node.OverlayIndex);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      TreeView1.Items.Clear;
      FormCreate(nil);
    end;
    
    end.
    
  • 相关阅读:
    js数组的迭代
    js检测对象的类型
    java基本数据类型及相互间的转换
    Mybatis Jdbctype JavaType 类型转换器
    Android TableLayout
    android:id设置的三种方式区别在哪?
    android:layout_gravity 和 android:gravity 的区别
    Android LinearLayout
    Log4j 分别使用不同的配置文件
    Extjs GridPanel 中放入 Combox显示问题
  • 原文地址:https://www.cnblogs.com/del/p/1108046.html
Copyright © 2020-2023  润新知