Delphi 2009 之 TCategoryPanelGroup[1]: ChevronAlignment 等

制作过程:
先添加一个 TCategoryPanelGroup, 再从其右键菜单 -> New Panel, 反复添加三个 TCategoryPanel.

本例测试了:
TCategoryPanelGroup 的 ChevronAlignment 属性、CollapseAll 和 ExpandAll 方法;
还有 TCategoryPanel 的 Collapsed 属性.

本例效果图:

代码文件:

复制代码
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    CategoryPanelGroup1: TCategoryPanelGroup;
    CategoryPanel1: TCategoryPanel;
    CategoryPanel2: TCategoryPanel;
    CategoryPanel3: TCategoryPanel;
    RadioGroup1: TRadioGroup;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses TypInfo;

const
  BoolArr: array[Boolean] of string = ('关闭 CPanel1','展开 CPanel1');

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  CategoryPanel1.Height := ClientHeight div 2;
  CategoryPanel2.Height := CategoryPanel1.Height;
  CategoryPanel3.Height := CategoryPanel1.Height;

  CategoryPanel1.Caption := 'CPanel1';
  CategoryPanel2.Caption := 'CPanel2';
  CategoryPanel3.Caption := 'CPanel3';

  Button1.Tag := 1;
  Button2.Tag := 2;
  Button3.Tag := 3;

  Button2.OnClick := Button1.OnClick;
  Button3.OnClick := Button1.OnClick;

  Button1.Caption := '全部关闭';
  Button2.Caption := '全部展开';
  Button2.Click;

  RadioGroup1.Caption := 'ChevronAlignment';
  for i := 0 to 2 do
    RadioGroup1.Items.Add(GetEnumName(TypeInfo(TAlignment), i));
  RadioGroup1.ItemIndex := 0;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  CategoryPanelGroup1.ChevronAlignment := TAlignment(RadioGroup1.ItemIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  case TButton(Sender).Tag of
    1: CategoryPanelGroup1.CollapseAll;
    2: CategoryPanelGroup1.ExpandAll;
    3: CategoryPanel1.Collapsed := not CategoryPanel1.Collapsed;
  end;
  Button3.Caption := BoolArr[CategoryPanel1.Collapsed];
end;

end.
复制代码

窗体文件:

复制代码
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 224
  ClientWidth = 334
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object CategoryPanelGroup1: TCategoryPanelGroup
    Left = 0
    Top = 0
    Width = 193
    Height = 224
    VertScrollBar.Tracking = True
    HeaderFont.Charset = DEFAULT_CHARSET
    HeaderFont.Color = clWindowText
    HeaderFont.Height = -11
    HeaderFont.Name = 'Tahoma'
    HeaderFont.Style = []
    TabOrder = 0
    ExplicitHeight = 206
    object CategoryPanel1: TCategoryPanel
      Top = 0
      Caption = 'CategoryPanel1'
      TabOrder = 0
      ExplicitWidth = 230
    end
    object CategoryPanel2: TCategoryPanel
      Top = 200
      Caption = 'CategoryPanel2'
      TabOrder = 1
      ExplicitWidth = 230
    end
    object CategoryPanel3: TCategoryPanel
      Top = 400
      Caption = 'CategoryPanel3'
      TabOrder = 2
      ExplicitWidth = 230
    end
  end
  object RadioGroup1: TRadioGroup
    Left = 209
    Top = 8
    Width = 115
    Height = 105
    Caption = 'RadioGroup1'
    TabOrder = 1
    OnClick = RadioGroup1Click
  end
  object Button1: TButton
    Left = 221
    Top = 126
    Width = 92
    Height = 25
    Caption = 'Button1'
    TabOrder = 2
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 221
    Top = 157
    Width = 92
    Height = 25
    Caption = 'Button2'
    TabOrder = 3
  end
  object Button3: TButton
    Left = 221
    Top = 188
    Width = 92
    Height = 25
    Caption = 'Button3'
    TabOrder = 4
  end
end
复制代码

 

posted on   癫狂编程  阅读(249)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2018-11-24 numEdit

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
好的代码像粥一样,都是用时间熬出来的
点击右上角即可分享
微信分享提示