AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 カラーボックス(ColorBox) 2010/09/16
 
前回は[Additional]内の「ButtonedEdit」(ボタン付エディット)について見ましたので、今回は同じく[Additional]内の「ColorBox」(カラーボックス)について見てみます。カラーボックスは Delphi6 にもあります。

 
カラーボックスを配置する前に、「テスト7」は画面が一杯になったので新しく「テスト8」(フォルダ008)を用意しています。
 
カラーボックスは色の選択を行うためのコンポーネントで、コンボボックスのような感じで色を選択する事が出来るようになっています。というわけで取り合えず配置してみます。1つ目ですので Nameプロパティは「ColorBox1」となります。

取り合えずこのまま保存・コンパイル(再構築)・実行をして動かしてみます。

↓ 右横の▼をクリックします

↓ 色の一覧が表示されますので選択します

 
色の名前は Delphi利用者であればお馴染みですが、そうでない人にとっては「cl」+英語表記なので分かりにくいかもしれません(※日本語で表示したい場合は、Styleプロパティで指定出来ます:後述)。けれども左端に実際の色が表示されていますので、それを見れば分かりますので、コンボボックスで文字だけで表現するよりは理解しやすいかもしれません。
 
色の指定・取得は、Selectedプロパティで行う事が出来ます。<オブジェクトインスペクタ>で初期値として指定する事も出来ますし、プログラムコードで
ColorBox1.Selected := clBlue ;
var
 i : TColor; // integerでもOK
・・・
 i := ColorBox1.Selected ;
のように行う事も出来ます。
 
選択色一覧をどういう風にしたいのか、については、Styleプロパティで指定する事が出来ます。以下、ヘルプより抜粋です。下記のプロパティをTrueにすれば、その色が使えるようになります。
cbStandardColorsカラー ボックスに、Graphics ユニットの最初の 16 色の定数を一覧表示します。これらは、固定の RGB 値を表す定数(clRed、clBlack など)です。
cbExtendedColorsカラーボックスに clMoneyGreen、clSkyBlue、clCream、および clMedGray を含めます。
cbSystemColorsカラーボックスにWindowsのコントロールパネルで指定されている値を表すシンボルカラー定数を含めます。
cbIncludeNoneカラーボックスに clNone を含めます。このオプションは、Style に cbSystemColors が含まれている場合にのみ有効です。
cbIncludeDefaultカラーボックスに clDefault を含めます。このオプションは、Style に cbSystemColors が含まれている場合にのみ有効です。
cbCustomColorカラーボックスの最初のエントリはカスタムカラーを表します。カスタムエントリを選択すると、カラーボックスは色選択ダイアログを表示します。このダイアログで、ユーザーはカスタムカラーを指定できます。
cbPrettyNamesカラーボックスに、カラー定数の文字列ではなく、色の名前を単語として一覧表示します(たとえば、 'clBlack' の代わりに 'Black' と表示します)。
cbCustomColorsプロパティの記載はありませんのでその機能詳細は謎です。cbCustomColorプロパティでカスタム色を指定する事が出来ますが、それを指定したら自動的に追加してくれるのだろうか?と想像しましたが、どうも変化は無さそうな感じです。
 
cbIncludeNoneプロパティを True にすると、選択色一覧に「clNone」が追加されますが、この実際に見える色は NoneColorColorプロパティで指定します。初期値は clBlack(黒色)になっています。作成するソフトで「色指定なし」というような事を指定したい場合に利用出来ると思います。
 
cbIncludeDefaultプロパティを True にすると、選択色一覧に「clDefault」が追加されますが、この実際に見える色は DefaultColorColorプロパティで指定します。初期値は clBlack(黒色)になっています。作成するソフトで「初期値」や「デフォルト値」というような事を指定したい場合に利用出来ると思います。
 
cbCustomColorプロパティを True にすると、選択色一覧の最初に「カスタム...」が追加され、これを選択すると、「色の設定」画面が表示されて、一覧以外の自由な色を選択することが出来るようになります。



 
cbPrettyNamesプロパティを True にすると、「たとえば、 'clBlack' の代わりに 'Black' と表示します」と書かれていますが、これはおそらく英語版のDelphiのヘルプそのものであるから、だと思われますが、日本語版 Delphiで実際には、「Black」ではなく「黒色」と表示されます。

 
カラーボックスは、コンボボックスの派生クラスですから、親クラスであるコンボボックスのプロパティを継承していますので、コンボボックスと同じプロパティ(メンバ)も使えます。そのため、コンボボックスではお約束の、Itemsプロパティ、ItemIndexプロパティもそのまま利用出来ます。ですので、
ColorBox1.Items[1] := '黒色';
みたいな選択一覧内容文字列を直接変更する事も出来るのですが、整合性が取れなくなるかもしれませんのでやめておいた方がいいと思われます。
 
Selectedプロパティで選択した実際の色コードを取得する事は出来ますが、上記の選択一覧内容文字列を取得したい場合は、
i := ColorBox1.ItemIndex ;
if (i >= 0) then
 s := ColorBox1.ColorNames[i] ;
のようにすれば良いでしょう。勿論、
for i := 0 to ColorBox1.Items.Count-1 do begin
 s := ColorBox1.ColorNames[i] ;
 c := ColorBox1.Colors[i] ;
 ・・・
end;
のようにして名前と色コードの一覧を取得する事も可能です。
 
<オブジェクトインスペクタ>のイベント頁では、コンボボックス同様のイベントがあるのが分かります。但し、文字入力をする訳ではありませんので、OnChangeイベントを利用する事はないでしょう。AutoDropDownプロパティを True にして、キー入力により選択項目を指定するという手法もあり得ますから、その場合には、OnChangeイベントも発生します。しかし、Styleプロパティ内のcbPrettyNamesプロパティが False の場合、色名は全て「cl〜」となりますからキー入力による選択は現実出来ない様子ですし、cbPrettyNamesプロパティを True にしても、日本語表記されてこれもうまく行かない様子です。ですので、AutoDropDownプロパティは False のまま、OnChangeイベントも使用しない、というのが安全なように思います。
 
 
その他、<オブジェクトインスペクタ>をざっと見た限りでは、他のコンポーネント同様で、特別、気になるような項目は無い様子です。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/09/15
 2010/09/16
▼2010/09/17
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.