DBGridのセルをクリックすると、その内容がフォームへ反映されるようにしているのですが、comboboxへの反映ができません。
combobox1.text := DBGrid.field[1].asString;と書いています(すみません、式の右側はうるおぼえなので、実際に書いていることとちがうかもしれません)。
アドバイスいただけないでしょうか? バージョンは5を使用しています。
>すみません、式の右側はうるおぼえなので、実際に書いていることとちがうかもしれません
実際のコードを確認してから、ここに書き込んでみるのはいかがですか?
ちなみに、TComboBox の Style プロパティは、csDropDown ですか?
>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;
こんなこと?
dropdownlistを使っています。
Dさん、私が求めているものとは、ちょっと違います。すみません。
DBGridのcellをクリックしたときに、発生する処理です。
Dさんが書かれているのは、解決のためのヒントであって、そのままコピー&ペーストすれば解決するという
ものじゃないですね。少しは自分で考えましょうよ。
igyさんが書かれている
>TComboBox の Style プロパティは、csDropDown ですか?
というのも大事なことですよ。ちゃんと返事をしましょう。
というのは、ComboBoxはStyleがcsDropDownかcsDropDownListかで動きが違い、csDropDownの時は
TextプロパティをセットすればComboBoxの表示を変えることができますが、csDropDownListの時は
表示したいTextをItemに追加してから、ItemIndexを指定して表示をするという手順になります。
あ、すみません、csDropDownListですね。見えていませんでした。ということで、表示したいTextを
Itemに追加してからItemIndexを指定してください。
ItemIndexはComboBox.Items[ComboBox.Items.Indexof(表示したいText)]で取れます。
bonaさん
どこまで出来て、どこが解らないかを具体的なコードを書いてくれないと、解りません。コードを書いてください。
HOtaさん
DBGridCellClickでcomboboxがDropDownだと
combobox.text := DBGrid1.Fields[0].AsString;
で、DBGridでセルをクリックしたときに、その内容が反映されるのですが、
DropDownListにすると、同じようにコードを書いても、反映されません。
コンパイルはできます。また、実行時にエラーは発生しません。
ただ、なにも反応がない状態です。
dropDownlistの状態で、DBGridのセルクリックしたときに内容が反映される方法または書き方がわからない状況です。
>dropDownlistの状態で、DBGridのセルクリックしたときに内容が反映される方法または書き方がわからない状況です。
Kenny さんがすでに、
>csDropDownListの時は表示したいTextをItemに追加してから、
>ItemIndexを指定して表示をするという手順になります。
と書かれてますが、
csDropDownListの時は、(表示したいTextがリストにない場合、Itemに追加してから)
ItemIndexを指定して表示をするという手順になります。
としたほうがよいかもしれませんね。
書かんと分からん?
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;
みなさん、ありがとうございます。てとりあしとりさんへ。教えてくださってありがたいのですが、普通に教えてくださったら、感謝の気持ちが半減しなかったと思います。確かに、自分で考えてやれよっていう部分もわかりますけど、ほかの方々にとっては簡単なことでも本当にわからないから、ここで尋ねました。仮に、あなたが全く知らない分野を自分で勉強していてわからないと、あなたのような言い方で教えてもらってら、どう思いますか?そんなこと、自分にはないと思うなら、それはそれで仕方ないです。でも、ありがとうございました。
being untricked でした。
>being untricked でした。
これってなんなんでしょうか、私には分かりません、教えて下さい。
たぶん、スペルミスだと思います。untricked → unticked. つまり、解決チェックを入れ忘れていたということです。
>普通に教えてくださったら、感謝の気持ちが半減しなかったと思います。
何回か、この掲示板でも挙げられてますが、
http://www.hyuki.com/writing/techask.html
に目を通してみるのはいかがですか?
是非解らない部分を詳しく書いて欲しいのです。条件が解らないと答えようが有りません。この場合でも、Delphi5とTComboBox使用しか書いていませんので、この様な答えになったのでしょう。詳しく疑問点を書けば、その課程で疑問が解消できたかも解りません。
なお、解決した場合もどのように解決したかを書いて欲しいですね。何がネックになったのか他の方にもよくわかると思います。
ツイート | ![]() |