Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2003年07月20日] [更新 2015年01月29日] 均等割付グラデーションボタンコンポーネント
均等割付グラデーションボタンコンポーネント
テストプログラム ChangeStyle
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro







いろいろなスタイルの確認


ボタンのいろいろなスタイルを切換えボタンによって表示します.
プログラムのコード上で,ButtonStyle プロパティと,Gradation プロパティを変更しています.


図1
ボタンスタイルを切換表示

リスト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.