


 
 
 
 
 
 
 |
DelphiXE3 [FMX] カラーボタン(ColorButton)2013/11/19 |
前回は [Colors]内のコンボカラーボックス(ComboColorBox)について見てみましたが今回はその次のカラーボタン(ColorButton)について見ていきます。
[Colors]内
FMX |  |
ヘルプより。
標準のキャプションではなく色を表示する標準ボタンを表します。
TColorButton の動作は標準の TButton と似ています。通常の標準ボタンと同様に、モーダル結果まで持つことができます。TColorButton が標準のボタンと唯一異なるのは、標準のテキスト キャプションが表示されず、長方形の中の色によってボタンの表面がほとんど完全に塗りつぶされる点です。 |


 |
Color
このボタンを表示する色を示します。Color プロパティは、TAlphaColor 型です。 |
TAlphaColor は 4 種類のチャネル(ARGB)で構成され、4 バイトの 16 進数値で指定されます。下位の 3 バイトは RGB 色チャネルを表わし、それぞれ青、緑、赤の強度です。最上位バイトは透過度の係数(アルファ チャネル)です。$FFFF0000(Delphi)または 0xFFFF0000(C++)という値は最大輝度の純粋な青色を表します。$FF00FF00(Delphi)または 0xFF00FF00(C++)は純粋な緑色、$FF0000FF(Delphi)または 0xFF0000FF(C++)は純粋な赤色です。$FF000000(Delphi)または 0xFF000000(C++)は黒色であり、$FFFFFFFF(Delphi)または 0xFFFFFFFF(C++)は白色です。 |
Text
現在の TTextControl オブジェクトの表面上にレンダリングされる、テキストを示します。
Text プロパティを設定すると、現在の TTextControl によって表示されるテキストを指定することができます。 Text は、どのstringでも構いません。
Text プロパティを変更する前に、すでに適用されている効果がある場合、それは新しいテキストでも維持されます。 また、この TTextControl の表面は再描画されます。is repainted.
ヒント: 新しいテキスト文字列を、すでに表示されているものと全く同じに指定した場合、効果は更新されず、TTextControl オブジェクトも再描画されません。 |
とありますが、ボタンのクラスから継承されているだけで、このカラーボタンでは無効化されています。 |
それでは少し試してみます。
このコンポーネントそのものには、色を選択する手段というのは実装されていませんので、例えばボタンをクリックした際に、色を選択したい、というようなケースでは、ボタンのクリックイベントで何らかの色選択を行わせるコーディングをせねばなりません。VCLであれば単純に ColorDialog が使えましたが、FireMonkey(FMX)にはありませんので、別フォームを作って対応させてみます。
procedure TForm1.ColorButton1Click(Sender: TObject);
begin
Form2.S_Col := ColorButton1.Color ;
if (Form2.ShowModal = mrOK) then
ColorButton1.Color := Form2.S_Col ;
end; |
uses節に「Unit2」を追記します。
メニュー「ファイル」→「新規作成」→「FireMonkeyフォーム - Delphi」を選択し、下記のような画面を作ります。
Button1:「OK」ボタンの ModalResultプロパティは「mrOk」
Default プロパティを「True」
Button2:「キャンセル」ボタンの ModalResultプロパティは「mrCancel」
Cancel プロパティを「True」
としています。
…
type
TForm2 = class(TForm)
…
private
{ private 宣言 }
public
{ public 宣言 }
S_Col : TAlphaColor ;
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
S_Col := ColorPanel1.Color ;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
ColorPanel1.Color := S_Col ;
end; |
これを「Unit2.pas」として保存します(最初の画面は「Unit1.pas」)。
コンパイル・実行を行うと、下図のようになります。

カラーボタンをクリック
↓

独自の色選択画面(Form2;Unit2.pas)が表示されます
↓

色を選択して[OK]をクリックします
↓

選択した色が反映されました
色選択画面を作成したくない場合は、先のコンボカラーボックス(ComboColorBox)を利用すれば良いと思われます。逆にいえば、色選択画面を独自に作りたい場合には、このカラーボタンを利用すると良いかもしれません。
例えば、ColorDialog のような、複数の色を保管・再利用するような画面レイアウトにするとか、もっと異なる色設定画面、例えば、photoshop や Painter 等のような画面を自作したい場合など。色設定画面は、一度作っておけば、他にもいろいろ使えると思いますので、それほど問題にもならないと思われます。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/18
2013/11/19
▼2013/11/20
シェアウェア
Script!World
データベース
|