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

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

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

 
カラーリストボックスは、カラーボックス同様、色の選択を行うためのコンポーネントで、リストボックスのような感じで色を選択する事が出来るようになっています。というわけで取り合えず配置してみます。1つ目ですので Nameプロパティは「ColorListBox1」となります。

 
色の名前は Delphi利用者であればお馴染みですが、そうでない人にとっては「cl」+英語表記なので分かりにくいかもしれません(※日本語で表示したい場合は、Styleプロパティで指定出来ます:後述)。けれども左端に実際の色が表示されていますので、それを見れば分かりますので、リストボックスで文字だけで表現するよりは理解しやすいかもしれません。
 
色の指定・取得は、Selectedプロパティで行う事が出来ます。<オブジェクトインスペクタ>で初期値として指定する事も出来ますし、プログラムコードで
ColorListBox1.Selected := clRed ;
var
 i : TColor; // integerでもOK
・・・
 i := ColorListBox1.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プロパティもそのまま利用出来ます。ですので、
ColorListBox1.Items[1] := '黒色';
みたいな選択一覧内容文字列を直接変更する事も出来るのですが、整合性が取れなくなるかもしれませんのでやめておいた方がいいと思われます。
 
Selectedプロパティで選択した実際の色コードを取得する事は出来ますが、上記の選択一覧内容文字列を取得したい場合は、
i := ColorListBox1.ItemIndex ;
if (i >= 0) then
 s := ColorListBox1.ColorNames[i] ;
のようにすれば良いでしょう。勿論、
for i := 0 to ColorListBox1.Items.Count-1 do begin
 s := ColorListBox1.ColorNames[i] ;
 c := ColorListBox1.Colors[i] ;
 ・・・
end;
のようにして名前と色コードの一覧を取得する事も可能です。
 
 
リストボックスでは、複数項目を選択する場合、<オブジェクトインスペクタ>でMultiSelectプロパティを True にして、プログラム実行時、Selected[]プロパティで選択したかどうかを確認することが出来ましたが、このカラーリストボックスでも<オブジェクトインスペクタ>に MultiSelectプロパティはありませんが、プログラム実行時に指定する事によって複数選択を行う事が出来るようになります。
ColorListBox1.MultiSelect := True ;
(※この場合、Selectedプロパティでのデフォルト色指定は無効化されます)
しかし残念ながら、リストボックスの Selected[] プロパティに相当するプロパティが見当たりません。何か「技」があるのかもしれませんが、取り合えず、カラーリストボックスで複数選択を行うのは考えない方がいいように思われます。
 
 
<オブジェクトインスペクタ>のイベント頁では、リストボックス同様のイベントがあるのが分かります。その他、<オブジェクトインスペクタ>をざっと見た限りでは、他のコンポーネント同様で、特別、気になるような項目は無い様子です。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/09/16
 2010/09/17
▼2010/09/18
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.