DBGridの内容をComboboxへ反映

解決


bona  2010-01-30 17:50:19  No: 37339

DBGridのセルをクリックすると、その内容がフォームへ反映されるようにしているのですが、comboboxへの反映ができません。
combobox1.text := DBGrid.field[1].asString;と書いています(すみません、式の右側はうるおぼえなので、実際に書いていることとちがうかもしれません)。  
アドバイスいただけないでしょうか?  バージョンは5を使用しています。


igy  2010-01-30 17:55:00  No: 37340

>すみません、式の右側はうるおぼえなので、実際に書いていることとちがうかもしれません

実際のコードを確認してから、ここに書き込んでみるのはいかがですか?


igy  2010-01-30 18:18:36  No: 37341

ちなみに、TComboBox の Style プロパティは、csDropDown ですか?


D  2010-01-31 01:00:36  No: 37342

>comboboxへの反映ができません。
>combobox1.text := DBGrid.field[1].asString;

procedure TForm1.Button1Click(Sender: TObject);
var
  li_Index: Integer;
begin
  li_Index := ComboBox1.ItemIndex;
  if (li_Index >= 0) then begin
    ComboBox1.Items[li_Index] := 'テスト';
    ComboBox1.ItemIndex := li_Index;
  end else begin
    ComboBox1.ItemIndex := ComboBox1.Items.Add('テスト');
  end;
end;

こんなこと?


bona  2010-01-31 02:31:13  No: 37343

dropdownlistを使っています。

Dさん、私が求めているものとは、ちょっと違います。すみません。
DBGridのcellをクリックしたときに、発生する処理です。


Kenny  2010-01-31 03:36:39  No: 37344

Dさんが書かれているのは、解決のためのヒントであって、そのままコピー&ペーストすれば解決するという
ものじゃないですね。少しは自分で考えましょうよ。

igyさんが書かれている
>TComboBox の Style プロパティは、csDropDown ですか?
というのも大事なことですよ。ちゃんと返事をしましょう。
というのは、ComboBoxはStyleがcsDropDownかcsDropDownListかで動きが違い、csDropDownの時は
TextプロパティをセットすればComboBoxの表示を変えることができますが、csDropDownListの時は
表示したいTextをItemに追加してから、ItemIndexを指定して表示をするという手順になります。


Kenny  2010-01-31 03:43:02  No: 37345

あ、すみません、csDropDownListですね。見えていませんでした。ということで、表示したいTextを
Itemに追加してからItemIndexを指定してください。
ItemIndexはComboBox.Items[ComboBox.Items.Indexof(表示したいText)]で取れます。


HOta  2010-02-01 05:13:53  No: 37346

bonaさん
どこまで出来て、どこが解らないかを具体的なコードを書いてくれないと、解りません。コードを書いてください。


bona  2010-02-02 07:38:11  No: 37347

HOtaさん

DBGridCellClickでcomboboxがDropDownだと

combobox.text := DBGrid1.Fields[0].AsString;

で、DBGridでセルをクリックしたときに、その内容が反映されるのですが、

DropDownListにすると、同じようにコードを書いても、反映されません。
コンパイルはできます。また、実行時にエラーは発生しません。
ただ、なにも反応がない状態です。

dropDownlistの状態で、DBGridのセルクリックしたときに内容が反映される方法または書き方がわからない状況です。


igy  2010-02-02 09:08:36  No: 37348

>dropDownlistの状態で、DBGridのセルクリックしたときに内容が反映される方法または書き方がわからない状況です。

Kenny さんがすでに、

>csDropDownListの時は表示したいTextをItemに追加してから、
>ItemIndexを指定して表示をするという手順になります。

と書かれてますが、

csDropDownListの時は、(表示したいTextがリストにない場合、Itemに追加してから)
ItemIndexを指定して表示をするという手順になります。

としたほうがよいかもしれませんね。


てとりあしとり  2010-02-02 09:34:34  No: 37349

書かんと分からん?
var
  idx: Integer;
  ss: string;
begin
  ss := DBGrid1.Fields[0].AsString;
  with ComboBox1 do begin
   idx := Items.IndexOf(ss);
   if (idx = -1)and(ss <> '') then begin
    ItemIndex := Items.Add(ss);
   end else
    ItemIndex := idx;
  end;


bona  2010-02-11 11:01:25  No: 37350

みなさん、ありがとうございます。てとりあしとりさんへ。教えてくださってありがたいのですが、普通に教えてくださったら、感謝の気持ちが半減しなかったと思います。確かに、自分で考えてやれよっていう部分もわかりますけど、ほかの方々にとっては簡単なことでも本当にわからないから、ここで尋ねました。仮に、あなたが全く知らない分野を自分で勉強していてわからないと、あなたのような言い方で教えてもらってら、どう思いますか?そんなこと、自分にはないと思うなら、それはそれで仕方ないです。でも、ありがとうございました。


bona  2010-02-11 11:03:03  No: 37351

being untricked でした。


TS  2010-02-11 18:02:33  No: 37352

>being untricked でした。
これってなんなんでしょうか、私には分かりません、教えて下さい。


ここ  2010-02-11 18:12:51  No: 37353

たぶん、スペルミスだと思います。untricked → unticked. つまり、解決チェックを入れ忘れていたということです。


igy  2010-02-11 18:27:01  No: 37354

>普通に教えてくださったら、感謝の気持ちが半減しなかったと思います。

何回か、この掲示板でも挙げられてますが、
http://www.hyuki.com/writing/techask.html
に目を通してみるのはいかがですか?


HOta  2010-02-11 19:21:30  No: 37355

是非解らない部分を詳しく書いて欲しいのです。条件が解らないと答えようが有りません。この場合でも、Delphi5とTComboBox使用しか書いていませんので、この様な答えになったのでしょう。詳しく疑問点を書けば、その課程で疑問が解消できたかも解りません。
なお、解決した場合もどのように解決したかを書いて欲しいですね。何がネックになったのか他の方にもよくわかると思います。


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

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






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