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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 リストボックス(ListBox) 2010/08/22
 
前頁で[Standard]内の「CheckBox」(チェックボックス)、「RadioButton」(ラジオボタン)について書きましたので次に、同じく[Standard]内の「ListBox」(リストボックス)について見てみます。リストボックスは Delphi6 にもあります。

 
リストボックスは、内容項目一覧を縦に並べて表示し、そのうちのいずれか、或いは複数項目を選択したりするのに利用されるコンポーネントです。それでは配置してみます。1つ目なので Nameプロパティは「ListBox1」となります。項目内容は初期状態で何も無しとなっています。

 
内容項目をデザイン時に作成する場合には、<オブジェクトインスペクタ>のItemsプロパティの右横の[…]ボタンをクリックします。



内容項目を入力・編集し[OK]をクリック


 
プログラムで内容項目を追加する場合には、メモ(Memo)や、後述のコンボボックス(ComboBox)等と同様、TStrings型ですので、
ListBox1.Items.Clear;  // 内容クリア(内容を消す)
ListBox1.Items.Add('パソコン筐体');
ListBox1.Items.Add('電源');
・・・
のように Addメソッドで追加(下へ追加)します。途中に挿入したい場合は
ListBox1.Items.Insert(3,'CPU');
のように出来ます。最初の引数はListBoxのインデックス(0〜) つまり 何番目に入れるのかを指示します。その番号以降は下へずれていきます。引数が項目数をオーバーして存在しないインデックスを指示するとエラーしますので注意して下さい。
1項目のみ削除したい場合は
ListBox1.Items.Delete(2);
のようにします。引数は上記同様、ListBoxのインデックス(0〜)を示し、その番号のものが消えて上に詰められます。存在しないインデックスを指示してもエラーしませんが、そういう事はしないほうがいいでしょう。という訳で、現在の項目数を取得する場合は
n := ListBox1.Items.Count;
とします。各項目内容は
s := ListBox1.Items[1];
のようにします。大括弧内はListBoxのインデックス(0〜)を示します。存在しないインデックスを指示するとエラーしますので注意して下さい。また、ListBoxの中から簡単に文字を検索する事が出来ます(但し、内容が完全一致する場合)。
idx := ListBox1.Items.IndexOf('〜〜');
該当するListBoxのインデックス(0〜)の値が取得できます。見つからない場合は「-1」が返ってきます。
 
ListBoxの内容項目のうち、クリックしてどれを選択したのかを取得する場合は
idx := ListBox1.ItemIndex;
で該当するListBoxのインデックス(0〜)の値が取得できます。選択していない場合は「-1」が返ってきます。これを行う前に、項目数が0であるかどうかを確認し、項目数が0の場合には「選択不可」であるのでこれを行わないようにする方が良いでしょう。
ListBoxのMultiSelectプロパティを True にすると、複数項目を選択することが出来るようになります。Shiftキーを押しながらクリックして範囲選択、Ctrlキーを押しながらクリックしてバラバラに複数選択、が可能です(※この場合、ExtendedSelectプロパティをTrueにしておくのが普通でしょう)。選択したのかどうかを取得するには
s := '';
for i:=0 to ListBox1.Items.Count-1 do begin
 if (ListBox1.Selected[i]) then begin
  // 選択している場合
  s := s + ListBox1.Items[i] + '|';
 end;
end;
ShowMessage(s);
のように Selected を利用して取得・確認します。
 
という辺りがよく利用される機能ってところでしょう。
 
 
それでは<オブジェクトインスペクタ>を見ていきます。
まずは AutoComplete プロパティ。ヘルプより。
ユーザーが,リストに入力して項目にフォーカスを提供できるかどうかを指定します。
AutoComplete を使用すると,リストボックスがユーザーキーストロークに応答して自動的に ItemIndex プロパティを更新するかどうかを指定できます。AutoComplete プロパティが true になっていれば,ユーザーがタイプした文字列で始まる最初の項目にフォーカスが移っていきます。ユーザーがさらに文字を入力すると,一致する文字列が長くなるため,ItemIndex はそれより後の項目に変更されます。
との事。ListBox上でキー入力して、該当するものがあればそこへ移るって機能ですね。
 
そのほかには別段気になるプロパティもイベントも無さそうな感じです。
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/08/21
 2010/08/22
▼2010/08/23
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.