Delphi Programming / Object Pascal
[掲載 2008年04月06日] [更新 2015年10月03日] Delphi サンプルプログラム集 |
888_スキン変更用コンポーネント |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro
VCLSkin 5.50.10.11, AlphaControls 2015 v10.17 Lite Edition |
|
888_XPSkinForm.zip [2,147 KB] 2015年10月03日版 (EXE 同梱) |
- 2010年07月15日
- Delphi 2010 で動作確認
- AlphaControls Lite Editonのテストを追加
- 2015年10月03日
- Windows 7 U64(SP1) + Delphi XE(UP1) Pro で動作確認
|
Windows XP テーマのスキンを変更する方法をこのサイトでも紹介していますが,Delphi のアプリケーションだけでスキンを変更するためのコンポーネントもあります.例えば,
等です.有料版と,無料版,デモ版(試用版)等があります.また,スキン編集用のプログラムも提供されています.
Delphi XE2 では,VCL スタイルを使用して,アプリケーションの外観を変更することができるようになりました.[オプション] [アプリケーション] [表示] で設定し,実行時にも変更が可能です. |
VCLSkin コンポーネントのインストールは非常に簡単です.インストール,アンインストール用のプログラムが用意されています.デモプログラムも添付されています. |
|
図1
インストール
- Install.exe を実行するだけ
- 設計時に,対象の Delphi のバージョンのフォルダにパスを通しておく
|
|
図2
スキン編集用プログラム
- 実行ファイル名は Builder.exe
- 既存のスキンの編集も可能
- 思い通りのスキンにするのは結構大変かも知れない
|
VCLSkin コンポーネントの簡単なテストプログラムです.デモ版では,フォームのキャプションバーの Caption が VCLSkin Demo となります. |
|
図3
設計時画面
- SkinData コンポを配置
- アプリ全体で同じスキンにする時はSkinFormtypeの値をstMainFormに,このForm だけにする場合は stOnlyThisForm にする
- SkinData1 の Active プロパティを True
- SkinStore プロパティでスキンファイルを指定する
|
|
図4
実行時画面
- 設計時に SkinStore プロパティで指定したスキンで実行
- 実行時に設定または変更するには,SkinFile プロパティを使用する
|
|
図5
Button1 クリックでスキン変更
|
|
図6
スキンが変わる |
|
図7
スキン適用コントロール変更
|
|
図8
実行結果
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinSkinData, StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Edit1: TEdit;
Memo1: TMemo;
ComboBox1: TComboBox;
Label1: TLabel;
SkinData1: TSkinData;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
RadioButton2: TRadioButton;
RadioButton1: TRadioButton;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// OpenDialogの初期ディレクトリを設定
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
end;
//=============================================================================
// 実行時にスキンを変更する
// SkinFileプロパティを設定すると実行時にスキンの変更が可能
// 一方SkinStoreプロパティはEXE埋込みとなる
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'スキンファイル(*.skn)|*.skn';
if OpenDialog1.Execute then begin
SkinData1.SkinFile := OpenDialog1.FileName;
end;
end;
end.
02_AlphaControls Lite Edition |
Free 版の AlphaControls Lite Edition をインストールしてテストしてみました.こちらのコンポーネントは,実行時にスキンファイルが必要です.
このコンポーネント群には,Delphi の各コンポーネントに該当するコンポーネントがあり,いくつかのプロパティとイベントが追加されています. |
|
図9
インストール
- 対象の Delphi のバージョンのフォルダにパスを通す
- acntDelphiXE_r.dpk を開いてコンパイル
- acntDelphiXE.dpk を開いて [インストール] [上書き保存]
|
|
図10
スキン編集用プログラム
- ASkinEditor をダウンロード
- 実行ファイルは,[Bin] フォルダ内の ASkinEditor.exe
- 別途画像編集ソフトが必要
- 既存のスキンの編集も可能
- 思い通りのスキンにするのは結構大変かも知れない
- これはタイトルバーの編集中
|
|
図11
設計時画面
- sSkinManager コンポを配置
- SkinDirectory でスキンファイルのあるディレクトリを設定
- SkinName プロパティでスキンファイルを指定
|
|
図12
実行画面(Windows 7)
|
|
図13
別のスキン
|
|
図14
フォームのみのスキン適用
- SkinManager1 の ShinningRules プロパティの srThirdParty を False にした場合
- ボタン等のデザインに変更なし
|
|
図15
Windows 10.asz の場合
|
リスト2
テストプログラムのコード
実行時にスキンファイルが必要 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, sSkinProvider, sSkinManager;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Memo1: TMemo;
ComboBox1: TComboBox;
StatusBar1: TStatusBar;
Panel1: TPanel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
RadioButton2: TRadioButton;
RadioButton1: TRadioButton;
Button1: TButton;
Button2: TButton;
sSkinManager1: TsSkinManager;
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// スキンの設定
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
sSkinManager1.SkinDirectory := ExtractFileDir(Application.ExeName);
sSkinManager1.SkinName := 'SoapSky - Blue.asz';
sSkinManager1.Active := True;
end;
//=============================================================================
// 実行時にスキンを変更する
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'スキンファイル(*.asz)|*.asz';
if OpenDialog1.Execute then begin
sSkinManager1.Active := False;
sSkinManager1.SkinDirectory := ExtractFileDir(OpenDialog1.FileName);
sSkinManager1.SkinName := ExtractFileName(OpenDialog1.FileName);
sSkinManager1.Active := True;
end;
end;
end.
|