


 
 
 
 
 
 
 |
Delphi2010 色選択の画面 2010/11/04 |
前回は[Dialogs]内の「FontDialog」(「フォント選択」画面)について見ましたので今回も同じく[Dialogs]内の「ColorDialog」(「色選択」画面)をみてみます。「色選択」画面は Delphi6 にもあります。
「テスト21」を開いてそこに配置してみます。1つ目ですので Nameプロパティは「ColorDialog1」となります。アイコン絵となりますが実行時には「色選択」画面が表示されます。ボタンを1つ追加します。
「色選択」画面は、画面上のある部分をどのような色で表示するか、とか、どのような色で印刷を行うか等のような場合に利用出来ます。お絵描きソフトやドローソフト、CADソフト等でも色を指定するというのはお馴染みの作業ですね。まぁソフトウェアによってどんな画面が表示されるのか?どのように色を選択するのか?というのは種々様々だったりしますけれど。ここではフォーム画面の色を変更できるようにしてみます。ボタン[色](Button4)をクリックした時の処理を記述します。
procedure TForm1.Button4Click(Sender: TObject);
begin
ColorDialog1.Color := Form1.Color ;
if (ColorDialog1.Execute) then begin
Form1.Color := ColorDialog1.Color ;
end;
end; |
色選択画面での初期設定値には、Colorプロパティへ色の値を指定すれば良いです。そして、「開く」「保存」「フォント選択」画面同様、色選択画面を表示(実行)するには Executeメソッドを利用します。[OK]ボタンをクリックすると「True」値が返ってきます。[キャンセル]ボタンをクリックするか右上の[×]をクリックすると「False」値が返ってきます。色選択画面で指定した値は、Colorプロパティで取得できます。保存・コンパイル(再構築)・実行してみます。

文章を入力し、[色]ボタンをクリック
↓

色選択画面表示
[色の作成]ボタンをクリックすると
色々な色から選択/RGB値入力が可能です
↓

↓

試しにオレンジ色を指定して[OK]クリック
↓

フォーム画面の色が変更されました
コントロールによっては、色を指定しても無効化される場合がありますし、別のプロパティを指定する事によって色が反映されるという場合もあります。印刷の場合には、相手プリンタがモノクロ(白黒)プリンタである場合はカラーは出ませんし、プリンタドライバでモノクロ(白黒)モードにしてもカラーは出ません。その際、プリンタドライバ設定(プリンタのプロパティ;コントロールパネルからの詳細設定)によっては、カラーを白〜灰色〜黒の濃淡表現出来るもの、網掛け状態なハーフトーン(ディザリング)表現が出来るもの、があります。白色以外は黒色にベタ塗りする設定がある場合もあります。相手がカラープリンタで、カラー印刷を行うようになっていても、様々な状態・条件・設定によって、画面の色と印刷した色が違う、という場合も多いです。
[作成した色]という事で、16個の色を作成・保持できるようになっています。これは、このいずれかの色をクリックして選択した後に、自由に色を選択したあと、[色の追加]ボタンをクリックします。クリック順によって間違ってしまう場合もありますから注意が必要かもしれません。で、この[作成した色]は、カスタムカラー CustomColorsプロパティで管理されています。おなじみのTStrings型ですが、<オブジェクトインスペクタ>にもありますのでデザイン時に指定しておく事も出来ますし、プログラム実行時に指定する事も出来ます。指定方法は
ColorA=000000
ColorB=4488AA
ColorC=00CC33
・・・
ColorP=AA0000 |
のようにすれば良いようです。16個ですので、A,B,C,…,Pの16個です。カラーコード値は通常「$AABBCC」のように16進数を示す「$」を付けますが、「$」は付けないようです。B値G値R値の順で16進数(00〜FF)で入力します。「$00AABBCC」のように値を4組指定しても構いません。無効な内容は無視されると思われます。
実行時に利用者が[作成した色]に登録した色情報を取得する場合も、CustomColorsプロパティで確認できます。例えば上記のイベントハンドラを
procedure TForm1.Button4Click(Sender: TObject);
var
i : integer ;
begin
ColorDialog1.Color := Form1.Color ;
if (ColorDialog1.Execute) then begin
Form1.Color := ColorDialog1.Color ;
for i:=0 to ColorDialog1.CustomColors.Count-1 do
Memo1.Lines.Add(ColorDialog1.CustomColors[i]);
end;
end; |
として、保存・コンパイル(再構築)・実行を行うと、下記のようになります。
指定していない黒色は「FFFFFFFF」となるようです。上記の場合は、A,B,C,…と順番になっていますが、順番が変わる場合もありますのでプログラミングする際には注意が必要です。という訳で、このCustomColorsプロパティの内容を取得・指定する事によって[色の作成]をした色状態は扱えますから、この内容を保存・呼び出しをするようにしておけば、ここの値は、以前に作成した色を扱う、というような事が出来るようになるでしょう。
Optionsプロパティにて、色選択画面の外観・動作等の設定を行う事が出来ます。以下、ヘルプより。
cdFullOpen | ダイアログボックスが開いたとき,カスタムカラーオプションを表示する |
cdPreventFullOpen | 新しい色を定義できないように,ダイアログボックスの[色の作成]ボタンを使用不可にする |
cdShowHelp | [色]ダイアログボックスに[ヘルプ]ボタンを追加する |
cdSolidColor | 選択された色に最も近い色を Windows に使用させる |
cdAnyColor | ユーザーが任意の色(ディザリングを使用しなければならないことがある)を選択できるようにする |
<オブジェクトインスペクタ>での内容は以下のようになっています。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/11/03
2010/11/04
▼2010/11/05
シェアウェア
Script!World
データベース
|