一発でN選択ができる Delphi / C++ Builder用 項目選択ボックス 中島信行
|
項目選択ボックスコンポーネント(TSelBox)
複数の項目を選択することは,FAに限らずよくあります.本コンポーネントは複数項目を,
マウスクリック(昇順に変化)
スペースキー(昇順に変化)
Shift+スペースキー(降順に変化)
0〜9,A〜Zのキー
で選択できるようにしています.数値入力が主体のアプリケーションでは慣れてくると極力テンキーで操作できたほうが使い勝手が向上するため,10種類までであれば0〜9のテンキーで選択できるようになっています.テンキーで操作できる関係で,二択であってもチェックボックスよりも使い勝手がよくなっています.
項目選択ボックスコンポーネントをリスト1〜リスト3に示します.
リスト1(Object Pascal版)はDelphiおよびC++ Builder用で,リスト2〜リスト3(C++版)はC++
Builder用です(リスト3は未掲載).C++ Builderではどちらか一方を登録してください.ただし,後述するサンプルプログラムではC++版を登録して作成しています.
項目選択ボックスコンポーネント(TSelBox)のプロパティ
◇ Alignment: TLeftRight default taRightJustify;
Caption文字列を右と左のどちらに表示するかを指定します.
taRightJustify Caption文字列を右側に表示
taLeftJustify Caption文字列を左側に表示
◇ AutoSize: Boolean default True;
領域(チェックボックスとCaption文字列の部分)を自動調整するかどうかを指定します.デフォルトのTrueではチェックボックスとCaptionの文字列に合わせて領域を自動調整します.チェックボックス内は以下に示すSelectStrプロパティで指定したもっとも長い項目の文字列に合わせます.高さはチェックボックスとCaption文字列の高いほうに合わせます.なお,アクセラレータ文字が指定されるとCaptionの領域が1文字ぶん広くなります.理由はすぐにおわかりになると思いますが.
◇ BoxColor: TColor default clWindow;
チェックボックス内の領域色を指定します.Caption文字列の色はTCheckBoxコンポーネントと同様にColorプロパティで指定します.
◇ BoxFont: TFont;
チェックボックス内の文字フォントを指定します.Caption文字列の文字フォントはTCheckBoxコンポーネントと同様にFontプロパティで指定します.
◇ BoxType: TSelBoxType default sbtYesNo;
選択項目の種類を指定するプロパティです.
☆ sbtCustom
下記以外の項目をSelectStrプロパティに指定することを指定します.
☆ sbtYesNo
選択項目としてYes,Noを指定します.SelectStrプロパティには,
'1 : Yes, 0 : No, Y : Yes, N : No'
と設定され,1またはYでYes,0またはNでNoとなります.テンキーの使用を考慮して0,1を認めています.
☆ sbtTrueFalse
選択項目としてTrue,Falseを指定します.SelectStrプロパティには日本語環境では,
'1 : 真, 0 : 偽, T : 真, F : 偽'
と設定され,日本語環境以外では,
'1 : True, 0 : False, T : True, F : False'
と設定されます.1またはTで真(True),0またはFで偽(False)となります.
☆ sbtOnOff
選択項目としてON,OFFを指定します.SelectStrプロパティには,
'1 : ON, 0 : OFF'
と設定されます.
☆ sbtDayOfWeek
選択項目として曜日( 日,月,..,土)を指定します.SelectStrプロパティには,
'1 : 日, 2 : 月, 3 : 火, 4 : 水, 5 : 木, 6 : 金, 7 :
土'
と設定され,1〜7で曜日を指定できます.
☆ sbtLongDayNames
選択項目として曜日(日曜日,月曜日,..,土曜日)を指定します.SelectStrプロパティには,
'1 : 日曜日, 2 : 月曜日, 3 : 火曜日, 4 : 水曜日,
5 : 木
曜日, 6 : 金曜日, 7 : 土曜日'
と設定され,1〜7で曜日を指定できます.
これは主として日本語環境以外を想定したものです.日本語環境ではsbtDayOfWeekを使って,Captionに曜日と指定する使い方のほうがよいと思います.
◇ BoxWidth: Integer default 20;
チェックボックス領域の幅を指定します.AutoSizeプロパティがTrue(デフォルト)の時は,BoxWidthプロパティで領域幅を変更しても,その後の表示で自動調整されます.
◇ Modes: TSelBoxModes default
[sbmArrowWrap, sbmClickChecked];
本コンポーネントの各種モードを指定するプロパティです.
☆ sbmAddHint
SelectStrプロパティで指定した文字列を実行時にHintプロパティに追加することを指定します.
SelectStrプロパティで指定した文字列は入力時のHintになりますから,二度手間を避けるために用意しました.下記の曜日の指定だとHintプロパティに'曜日 'をセットしておけば実行時のHintプロパティは,
曜日 1 : 日, 2 : 月, 3 : 火, 4 : 水, 5 : 木, 6 : 金,
7 : 土
となります.
ただし,(ステータスバーにHintを表示する場合のことを考慮して)ShowHintプロパティはTrueにしませんから,必要であればTrueにしてください.
☆ sbmArrowWrap
最大値の時にマウスクリックまたはスペースキーで最小値に,最小値の時にShift+スペースキーで最大値に連続ループさせるかどうかを指定します.
☆ sbmCaseSensitive
選択文字の指定時に大文字/小文字の区別をすることを指定します.大文字と小文字の区別をすると使いにくくなりますから,まず,指定することはないと思いますが.
☆ sbmClickChecked
TCheckBoxコンポーネントではマウスクリックでチェック状態が反転しますが,これと同様にマウスクリックで次の選択項目に変わるかどうかを指定します.二択の場合はマウスクリックでチェック状態が反転しても問題ありませんが,曜日などのように三択以上ではマウスクリックで選択状態が変わるのは不自然です.sbmClickCheckedをFalseにするとマウスクリックやアクセラレータ文字の押下ではフォーカスが移動するだけで,選択状態は変わらなくなります.
☆ sbmEnterChecked
項目はマウスクリックやスペースキーで次々に選択できますが,Enterキーでも項目選択を可能にするかどうかを指定します.なお,sbmEnterNextとsbmEnter
Checkedはどちらか一方しか選択できません.
☆ sbmEnterNext
以下略
copyright 1999 中島 信行