ComboBoxでのキー設定は可能?

解決


だい  2003-09-11 23:42:55  No: 4763

お世話になっております。
Delphi6の ComboBoxを使用しようと思っています。
ドロップダウン時に
    井川
    藪
    伊良部
と表示し、"井川" を選択すると 29 という値を取得したいのです。
(値取得できるタイミングの要望はありません)

AddItemメソッドで実現できそうな印象を受けているのですが、
実際どのようにコードを記述すればよいか分かりませんでした。
どなたかご教授願えませんでしょうか。
よろしくお願いいたします。


Jボス  2003-09-12 00:04:51  No: 4764

キー設定がしたいのですかね?
DBから値をとってくるだけなら方法はたくさんありますが。
その辺はどうですか?


だい  2003-09-12 00:59:01  No: 4765

Jボスさん、ありがとうございます。

DBから取得したレコードのデータを
ComboBoxのItem追加時に書き込んでしまいたいと思いました。


だい  2003-09-12 01:15:27  No: 4766

すみません、もうちょっと追加します。
ComboBoxには、あらかじめ
    井川   (29)
    藪     (4)
    伊良部 (41)
という項目を追加したいと思っています。
(括弧内は、DBから取得した番号データ)
ユーザが項目を選択した後、選択した項目から括弧内のデータを
取得して Labelコントロールなどに表示したいと思いました。


にしの  2003-09-12 01:45:06  No: 4767

あまり見やすくないですが、
ComboBox1.Items.AddObject('井川', TObject(29));
ComboBox1.Items.AddObject('藪', TObject(4));
ComboBox1.Items.AddObject('伊良部', TObject(41));
として、ComboBox1.Items.Objectsから取り出してIntegerでキャストしてやればできますよ。


Jボス  2003-09-12 01:45:37  No: 4768

とりあえずこれですが、
番号の表示は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;


だい  2003-09-12 01:59:06  No: 4769

にしのさん、Jボスさん、ありがとうございます。

にしのさん:
これからやってみます。ありがとうございます。

Jボスさん:
番号の重複はありません。それから・・・
すみませんが、できれば番号は非表示にしたいです。
その昔、空白をいっぱい入れて右端に隠したつもりでしたが
ユーザにフォームを大きくされ、終了してしまいました。(^^;


だい  2003-09-12 02:24:21  No: 4770

にしのさん、Jぼすさん、ありがとうございました。
無事、解決いたしました。

ComboBox.Items.AddObject()で実現できました。
(にしのさんから教えていただいた要領で、ComboBox.AddItem()を
 使用してもうまくいくことも確認いたしました)

Add処理部はループさせますので、決して汚くないと思います。
本当にありがとうございました。


KURARA  2003-09-12 02:39:59  No: 4771

だいさんの続きですが、
真似して作ってみたのですがうまくいきません。
ComboBox1.Items.AddObject('井川', TObject(29));
ComboBox1.Items.AddObject('藪', TObject(4));
ComboBox1.Items.AddObject('伊良部', TObject(41));
コンボには井川、藪、伊良部など表示されています。
TObject(29)等の
具体的にオブジェクトの値はどのように取得したのですか。
できればコードでお願いします。


だい  2003-09-12 02:45:12  No: 4772

KURARAさん、こんにちは。

with ComboBox1 do begin
  intBuffer := Integer(Items.Objects[ItemIndex]);
end;

で Integer型を取得できました。
(只今 TStringsを勉強中...)


KURARA  2003-09-12 02:56:24  No: 4773

できました!!
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加