均等割付グラデーションボタンコンポーネント
テストプログラム ChangeStyle |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro |
ボタンのいろいろなスタイルを切換えボタンによって表示します.
プログラムのコード上で,ButtonStyle プロパティと,Gradation プロパティを変更しています. |
|
図1
ボタンスタイルを切換表示 |
unit ChangeStyleUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, plButton;
type
TForm1 = class(TForm)
plButton10: TplButton;
plButton20: TplButton;
plButton30: TplButton;
plButton40: TplButton;
plButton50: TplButton;
plButton60: TplButton;
plButton100: TplButton;
plButton1: TplButton;
plButton2: TplButton;
plButton3: TplButton;
plButton4: TplButton;
plButton5: TplButton;
plButton6: TplButton;
plButton7: TplButton;
procedure plButton7Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// ボタンスタイルとその説明用文字列配列
//=============================================================================
const
AStyle : array [0..9] of TplButtonStyle =(
bsFlat,
bsFlatNoFrame,
bsNormal,
bsRoundRect,
bsRoundRectNoFrame,
bsFlat,
bsFlatNoFrame,
bsNormal,
bsRoundRect,
bsRoundRectNoFrame);
AStyleStr : array [0..9] of String =(
'フラットにグラデーション',
'フラットで枠なしグラデーション',
'普通のボタン風にグラデーション',
'角が丸いタイプにグラデーション',
'角が丸くて枠なしにグラデーション',
'フラットなタイプ(ラベル?)',
'フラットで枠なし(ラベル?)',
'普通のボタン風',
'角が丸いタイプ',
'角が丸くて枠なし');
var
Cnt: Integer; //ボタンをクリックした回数の記録用変数
//=============================================================================
// フォーム表示したら切換えボタンクリックで最初のスタイルで表示
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
Cnt := 0;
plButton7Click(nil);
end;
//=============================================================================
// ボタンスタイル表示切換えボタンクリックイベント
//=============================================================================
procedure TForm1.plButton7Click(Sender: TObject);
var
i : Integer;
ABtn : TplButton;
begin
if Cnt = 10 then Cnt := 0;
//Form1のコンポーネントを順番に操作
for i := 0 to Form1.ComponentCount - 1 do begin
if Form1.Components[i] is TplButton then begin
ABtn := (Form1.Components[i] as TplButton);
//plButton7は切換えボタンなので次のコンポーネントに
if ABtn.Name = 'plButton7' then Continue;
//plButton100は説明用のラベル形式ボタン
if ABtn.Name = 'plButton100' then begin
ABtn.CaptionB.Caption := AStyleStr[Cnt];
//表示位置(縦方向)の再設定
ABtn.CaptionVertCenter := True;
end else begin
//スタイル切換えが5番目以降はグラデーションなし
if Cnt >= 5 then begin
ABtn.Gradation := False;
end else begin
ABtn.Gradation := True;
end;
ABtn.ButtonStyle := AStyle[Cnt];
end;
end;
end;
Inc(Cnt);
end;
end.
|