お世話になっております。
Delphi6の ComboBoxを使用しようと思っています。
ドロップダウン時に
井川
藪
伊良部
と表示し、"井川" を選択すると 29 という値を取得したいのです。
(値取得できるタイミングの要望はありません)
AddItemメソッドで実現できそうな印象を受けているのですが、
実際どのようにコードを記述すればよいか分かりませんでした。
どなたかご教授願えませんでしょうか。
よろしくお願いいたします。
キー設定がしたいのですかね?
DBから値をとってくるだけなら方法はたくさんありますが。
その辺はどうですか?
Jボスさん、ありがとうございます。
DBから取得したレコードのデータを
ComboBoxのItem追加時に書き込んでしまいたいと思いました。
すみません、もうちょっと追加します。
ComboBoxには、あらかじめ
井川 (29)
藪 (4)
伊良部 (41)
という項目を追加したいと思っています。
(括弧内は、DBから取得した番号データ)
ユーザが項目を選択した後、選択した項目から括弧内のデータを
取得して Labelコントロールなどに表示したいと思いました。
あまり見やすくないですが、
ComboBox1.Items.AddObject('井川', TObject(29));
ComboBox1.Items.AddObject('藪', TObject(4));
ComboBox1.Items.AddObject('伊良部', TObject(41));
として、ComboBox1.Items.Objectsから取り出してIntegerでキャストしてやればできますよ。
とりあえずこれですが、
番号の表示はitemsの番号からtableにアクセスする方法が
使えそうなんですが・・・・。ちょっと・・
一つ質問させてください。
番号に重複はないのでしょうか?
var
intTest: integer;
strTest: string; //名前
strEdit: string; //背番号
strMain: string; //名前(背番号)で表示
begin
Table1.open;
with Table1 do
begin
for intTest := 0 to RecordCount -1 do
begin
strTest := FieldByname('名前').AsString;
strEdit := fieldbyname('背番号').asstring;
strMain := strTest+'('+strEdit+')';
combobox1.Items.Add(strMain);
next;
end;
end;
Table1.Close;
end;
にしのさん、Jボスさん、ありがとうございます。
にしのさん:
これからやってみます。ありがとうございます。
Jボスさん:
番号の重複はありません。それから・・・
すみませんが、できれば番号は非表示にしたいです。
その昔、空白をいっぱい入れて右端に隠したつもりでしたが
ユーザにフォームを大きくされ、終了してしまいました。(^^;
にしのさん、Jぼすさん、ありがとうございました。
無事、解決いたしました。
ComboBox.Items.AddObject()で実現できました。
(にしのさんから教えていただいた要領で、ComboBox.AddItem()を
使用してもうまくいくことも確認いたしました)
Add処理部はループさせますので、決して汚くないと思います。
本当にありがとうございました。
だいさんの続きですが、
真似して作ってみたのですがうまくいきません。
ComboBox1.Items.AddObject('井川', TObject(29));
ComboBox1.Items.AddObject('藪', TObject(4));
ComboBox1.Items.AddObject('伊良部', TObject(41));
コンボには井川、藪、伊良部など表示されています。
TObject(29)等の
具体的にオブジェクトの値はどのように取得したのですか。
できればコードでお願いします。
KURARAさん、こんにちは。
with ComboBox1 do begin
intBuffer := Integer(Items.Objects[ItemIndex]);
end;
で Integer型を取得できました。
(只今 TStringsを勉強中...)
できました!!
ありがとうございました。
ツイート | ![]() |