DBGridの内容をComboboxへ反映

解決


bona  2010-01-30 08:50:19  No: 37339  IP: 192.*.*.*

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

編集 削除
igy  2010-01-30 08:55:00  No: 37340  IP: 192.*.*.*

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

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

編集 削除
igy  2010-01-30 09:18:36  No: 37341  IP: 192.*.*.*

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

編集 削除
D  2010-01-30 16:00:36  No: 37342  IP: 192.*.*.*

>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-30 17:31:13  No: 37343  IP: 192.*.*.*

dropdownlistを使っています。

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

編集 削除
Kenny  2010-01-30 18:36:39  No: 37344  IP: 192.*.*.*

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

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

編集 削除
Kenny  2010-01-30 18:43:02  No: 37345  IP: 192.*.*.*

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

編集 削除
HOta  2010-01-31 20:13:53  No: 37346  IP: 192.*.*.*

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

編集 削除
bona  2010-02-01 22:38:11  No: 37347  IP: 192.*.*.*

HOtaさん


DBGridCellClickでcomboboxがDropDownだと

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

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

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

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

編集 削除
igy  2010-02-02 00:08:36  No: 37348  IP: 192.*.*.*

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

Kenny さんがすでに、

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

と書かれてますが、

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

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

編集 削除
てとりあしとり  2010-02-02 00:34:34  No: 37349  IP: 192.*.*.*

書かんと分からん?
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 02:01:25  No: 37350  IP: 192.*.*.*

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

編集 削除
bona  2010-02-11 02:03:03  No: 37351  IP: 192.*.*.*

being untricked でした。

編集 削除
TS  2010-02-11 09:02:33  No: 37352  IP: 192.*.*.*

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

編集 削除
ここ  2010-02-11 09:12:51  No: 37353  IP: 192.*.*.*

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

編集 削除
igy  2010-02-11 09:27:01  No: 37354  IP: 192.*.*.*

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

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

編集 削除
HOta  2010-02-11 10:21:30  No: 37355  IP: 192.*.*.*

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

編集 削除