☆TCategoryButtonsを使ってみる。
ButtonCategoryやButtonItemの設定は、オブジェクトインスペクタから簡単にできますが、 ここではプログラムで処理してみます。
まずは、デフォルトのTCategoryButtonsに項目を設定してみます。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, CategoryButtons;
type
TForm1 = class(TForm)
ImageList1: TImageList;
CategoryButtons1: TCategoryButtons;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetCategory(Index: Integer): String;
begin
case Index of
0: Result := 'Guitar';
1: Result := 'Synthesizer';
else
Result := 'Piano'
end;
end;
procedure GetSynthesizerItem(ButtonCategory: TButtonCategory);
var
ButtonItem: TButtonItem;
I: Integer;
begin
for I := 0 to 2 do
begin
ButtonItem := ButtonCategory.Items.Add;
ButtonItem.ImageIndex := 0;
case I of
0: ButtonItem.Caption := 'Roland';
1: ButtonItem.Caption := 'Yamaha';
else
ButtonItem.Caption := 'KORG';
end;
end;
end;
procedure GetGuitarItem(ButtonCategory: TButtonCategory);
var
ButtonItem: TButtonItem;
I: Integer;
begin
for I := 0 to 3 do
begin
ButtonItem := ButtonCategory.Items.Add;
ButtonItem.ImageIndex := 0;
case I of
0: ButtonItem.Caption := 'Ibanez';
1: ButtonItem.Caption := 'Gibson';
2: ButtonItem.Caption := 'Yamaha';
else
ButtonItem.Caption := 'Fender';
end;
end;
end;
procedure GetPianoItem(ButtonCategory: TButtonCategory);
var
ButtonItem: TButtonItem;
I: Integer;
begin
for I := 0 to 2 do
begin
ButtonItem := ButtonCategory.Items.Add;
ButtonItem.ImageIndex := 0;
case I of
0: ButtonItem.Caption := 'Steinway & Sons';
1: ButtonItem.Caption := 'Yamaha';
else
ButtonItem.Caption := 'Kawai';
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
ButtonCategory: TButtonCategory;
begin
// CategoryButtons1の設定
CategoryButtons1.Align := alClient;
CategoryButtons1.Images := ImageList1;
// ButtonCategory、ButtonItemの設定
for I := 0 to 2 do
begin
ButtonCategory := CategoryButtons1.Categories.Add;
ButtonCategory.Caption := GetCategory(I);
case I of
0: GetGuitarItem(ButtonCategory);
1: GetSynthesizerItem(ButtonCategory);
2: GetPianoItem(ButtonCategory);
end;
end;
end;
end.
これを実行するとこのようになります。
そこで、Delphiのツールパレットのような表示にしてみます。
FormのOnCreateで、CategoryButtons1のプロパティの設定を行います。
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
ButtonCategory: TButtonCategory;
begin
// CategoryButtons1の設定
CategoryButtons1.Align := alClient;
CategoryButtons1.Images := ImageList1;
CategoryButtons1.BorderStyle := bsNone;
CategoryButtons1.AlignWithMargins := True;
CategoryButtons1.ButtonFlow := cbfVertical;
CategoryButtons1.ButtonOptions :=
CategoryButtons1.ButtonOptions +
[boFullSize, boBoldCaptions, boUsePlusMinus, boCaptionOnlyBorder] -
[boVerticalCategoryCaptions];
// ButtonCategory、ButtonItemの設定
for I := 0 to 2 do
begin
ButtonCategory := CategoryButtons1.Categories.Add;
ButtonCategory.Caption := GetCategory(I);
case I of
0: GetGuitarItem(ButtonCategory);
1: GetSynthesizerItem(ButtonCategory);
2: GetPianoItem(ButtonCategory);
end;
end;
end;
これでいい感じになりました。
| 固定リンク
