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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] カラーリストボックス(ColorListBox)2013/11/20
 
前回は [Colors]内のカラーコンボボックス(ColorComboBox)について見てみましたので、今回はその次のカラーリストボックス(ColorListBox)について見ていきます。Delphi2010・VCLアプリケーションにも、カラーリストボックス(ColorListBox)コンポーネントはありますが、機能内容は多少異なるかもしれません。
   【Delphi2010の記事はこちら】
   【DelphiXE3[VCLアプリケーション]の記事はこちら】
 
   【継承元のリストボックス(ListBox)についてはこちら】
 
 
[Colors]内
FMX
 
ヘルプより。
色のスペクトルからアルファ色を選択できるコンボ リスト ボックスを表します。
 
TColorListBox の動作は標準の TListBox と似ていますが、標準のテキスト項目ではなく色が、色の付いた小さな正方形と色の名前という形式で一覧表示されます。
 
TColorComboBox コンポーネントでも同様のリストがドロップダウンとして表示されます。
 


 
Color
現在リストで選択されているアルファ カラーを示します。
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++)は白色です。
ItemIndex
現在選択された項目のインデックスを示します。
 
リストボックスで選択されている項目のインデックスを、取得または設定します。 リストの先頭の項目のインデックスは 0、2 番目の項目のインデックスは 1 です。以降も同様です。 項目が選択されていない場合、ItemIndex の値は -1 になります。
選択されている実際の項目を取得するには、Selected プロパティを使用します。
Items
カラー リスト ボックス内のカラー項目のリストへのアクセスを提供します。
 
Items を読み取ると、カラー リストボックスに現れる個々のカラー項目のリストにアクセスすることができます。
 
Items は、
FMX.Colors.TColorBox および FMX.Colors.TGradientEdit コンポーネントによって、内部的に使用されます。
Items右端の[…]をクリックするとエラー画面が表示されますね。
 
 
それでは少し試してみます。
ラベルとカラーボックスを配置します。

カラーリストボックスのクリックイベントハンドラを下記のようにします。
procedure TForm1.ColorComboBox1Change(Sender: TObject);
begin
 Label1.Text := 'Idx:'+IntToStr(ColorListBox1.ItemIndex);
 ColorBox1.Color := ColorListBox1.Color ;
end;
保存・コンパイル・実行します。



カラーリストボックスをクリックすると
その色を選択する事が出来ます
 
複数選択の MultiSelectプロパティや、ShowCheckboxesプロパティ、ListItemsプロパティ等は有効のようです。しかし、Itemsプロパティを参照することが出来ない(エラーになる)ため、例えば、
for i:=0 to ListBox1.Items.Count-1 do
 if (ColorListBox1.ListItems[i].IsSelected) then
  〜

for i:=0 to ListBox1.Items.Count-1 do
 if (ColorListBox1.ListItems[i].IsChecked) then
  〜
のような事が出来ません。
 
for i:=0 to 147 do
 if (ColorListBox1.ListItems[i].IsSelected) then
  〜
for i:=0 to 147 do
 if (ColorListBox1.ListItems[i].IsChecked) then
  〜
という事は可能ですが、ちょっとやっかいですね。この「147」という即値は const定数宣言しておいた方がいいように思われます。
 
 
リストボックス一覧に表示する内容を自分で追加入力する事が出来る様子です。
カラーリストボックスを右クリックして表示されるメニューの「項目エディタ」を実行すると「項目デザイナ」画面が表示されます。ダブルクリック、オブジェクトインスペクタ画面下の「項目エディタ」クリックでも可能です。



 
項目は、画面右側の「TListBoxItem」をクリックすると、
・TListBoxItem
・TMetropolisUIListBoxItem
のうちから選択出来ますが、後者は名前のごとく、Metropolis UI アプリケーションを作成する際の項目でしょうから、ここでは普通に、TListBoxItem のままにしておきます。

見たところ、カラーコンボボックスと同様、色指定がありませんね。まぁ、同じ ListBoxItem ですから当然といえば当然でしょうか。試しに5つ追加してみました。

 
リストコンボボックスのクリックイベントハンドラを下記のようにします。ItemIndex値の判定で即値を指定しても大丈夫なのかどうかは「?」ですが。
procedure TForm1.ColorListBox1Click(Sender: TObject);
var
 col : TAlphaColor ;
begin
 case(ColorListBox1.ItemIndex)of
 148: col := $800000FF;
 149: col := $8000FF00;
 150: col := $8000FFFF;
 151: col := $80FF0000;
 152: col := $80FF00FF;
 else
    col := ColorListBox1.Color ;
 end;
 Label1.Text := 'Idx:'+IntToStr(ColorListBox1.ItemIndex);
 ColorBox1.Color := col ;
end;
保存・コンパイル・実行します。



 
まぁ、カラーコンボボックスと同様、こういう事が正しいのかどうかについては分かりません。おそらくはリソースを消費するでしょうから、不必要であればデフォルト状態のまま利用されたほうが無難だと思われます。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/20
 2013/11/20
▼2013/11/21
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.