


 
 
 
 
 
 
 |
Delphi2010 値リストエディタ(ValueListEditor) 2010/09/13 |
前回は[Additional]内の「ControlBar」(コントロールバー)について見ましたので、今回は同じく[Additional]内の「ValueListEditor」(値リストエディタ)について見てみます。値リストエディタは Delphi6 にもあります。
値リストエディタは、キーと値をペアにした文字列のエディタです。感覚的には、文字列グリッドを2列にして、1列目を「キー」2列目を「値」にしたような感じでしょうか? デフォルト状態では、キーの入力・編集は出来ないようになっているようです。キーと値、といえば、レジストリとか、連想配列(ハッシュ)・辞書、等のようなイメージがありますね。これも、これまで使った事がないのでよく分かりませんから取り合えず配置してみます。1つ目ですので Nameプロパティは「ValueListEditor1」となります。
いきなり画面一杯になってしまい何が何だか分かりませんが、幅・高さのデフォルトが300くらいあるようです。フォーム画面そのものが横300くらいなので、Widthプロパティで幅、Heightプロパティで高さを変更し、小さくします。キー欄と値欄の幅のバランスが変なので、DefaultColWidthプロパティを 150 から 120 にします。
取り合えず動きを見るために、保存・コンパイル(再構築)・実行してみます。
キー欄の入力は出来ませんが、値欄の入力は出来るようです。
<オブジェクトプロパティ>にて、KeyOptionsプロパティの KeyEdit を True にしてみます。保存・コンパイル(再構築)・実行してみます。

↓

キー欄の入力が出来るようになりました。
<オブジェクトプロパティ>にて、KeyOptionsプロパティの KeyAdd を True にしてみます。保存・コンパイル(再構築)・実行してみます。すると、矢印キー↓で追加が出来るようになりました。何も入力せず矢印キー↑を押すと消えるようです。
<オブジェクトプロパティ>にて、KeyOptionsプロパティの KeyDelete を True にしてみます。保存・コンパイル(再構築)・実行してみます。すると、[Ctrl]+[Delete]で行を消すことが出来るようになりました。

↓ 1行目で[Ctrl]+[Delete]を押す

1行目が消えました
<オブジェクトプロパティ>にて、KeyOptionsプロパティの KeyUnique を True にしてみます。保存・コンパイル(再構築)・実行してみます。すると、既に入力しているものと同じキーを入力しようとすると、デバッガがエラー(例外)を検知したメッセージが表示された後、デフォルトのエラーメッセージ画面が表示され、キー欄が重複しない名前に省略された状態となります。

↓ キーを入力して[→]を押します

↓ デバッガがエラー表示 [継続]をクリック

↓ デフォルトの例外のメッセージ表示 [OK]クリック

なお、英小文字・大文字は同一視されるようです。ですので「abcde」と「ABCDE」と「aBcDe」は全て同じキーという扱いになります。半角文字と全角文字は同一視されないようです。
次に、Optionsプロパティですが、これは見た感じ、文字列グリッドと同じような感じなので、意味合いは想像できますね。
次に、Stringsプロパティでは、キーと値のデフォルトの内容を画面デザイン時に入力しておくことが出来るようです。キーの内容はここで入力するようにして、キーの追加・削除は出来ないようにしておき、値の内容だけを入力・編集する、というのが一つのパターンかもしれません。
次に、TitleCaptionsプロパティは、一番上の列名「キー」「値」を別の内容にする事が出来るようです。この編集画面は3行以上入力できてしまいますが、無視されるようです。
他は、、、他のコンポーネントと同様という感じですね。
それでは、入力・編集した内容がどのように取得できるのかを確認します。フォームにボタンを追加し、その OnClick イベントハンドラを下記のようにします。
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
s,key: string ;
begin
s := '';
for i := 0 to ValueListEditor1.Strings.Count - 1 do begin
key := ValueListEditor1.Strings.Names[i] ;
s := s + key + '|'
+ ValueListEditor1.Strings.Values[key] + '、'
+ ValueListEditor1.Strings[i] + #13 + #10 ;
end;
ShowMessage(s);
end; |
保存・コンパイル・実行してみます。ボタンをクリックしてみます。
というようになります。
キーの内容は Strings.Names[i] で取得できます。そしてその値の内容は、Strings.Values['キー内容'] で取得できます。添え字のところを文字列で指定できるようになっている訳ですね。この感じはまさに連想配列(ハッシュ)ですね。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/09/12
2010/09/13
▼2010/09/14
シェアウェア
Script!World
データベース
|