喫茶XRAYトップページ

[スレッド全体
]

[6169] RadioGroupについて返信 削除
2012/7/6 (金) 14:22:38 sato
ふたたびよろしくお願いします。(コーヒーのお代わりみたいですが)
Form1にButton1、Form2にRadioGroup1を置き
Form1.Button1Clickで
if Form2=nil then
  Form2:=TForm2.Create(Application);
Form2.RadioGroup1.ItemIndex:=1;
Form2.Show;

とすると、Form2.RadioGroup1のItemIndexは1になり、
2番目のボタンが選択状態になります。(FocusはTabOrderが0の
コンポーネントにあります)
ここで、RadioGroup1の1番目のボタンを選択すると、RadioGroup1に
Focusが移ります。
その後、Form2を閉じて、再度Form1のButton1をClickしても、今度は
Form2.RadioGroup1のItemIndexは0のままです。
どうしてでしょうか、
たびたびで申し訳ありませんがよろしくお願いします。
ただ、当然のことながら
Form2.Show;とせずに
Form2.ShowModal;
・・・
Form2.Release;
Form2:=nil;とすると問題ありません。




[6188] Re:RadioGroupについて返信 削除
2012/7/9 (月) 18:15:31 おかぽん
▼ satoさん
▼ satoさん
こんにちは。

解決した頃に出てきて恐縮ですが、RadioButtonは、フォーカスを受け取るだけで
チェックがついてしまう、ちょっと素敵で、でも困った仕様があります。
当方、相変わらずDelphi5ですが、最新版も同じなんでしょうか?

ItemIndexを変更しただけでは、フォーカスのあるコントロールが移動しません。
フォームを表示しなおすと、閉じたときにフォーカスのあったコントロールに、
フォーカスが当たりますが、そのとき、上記仕様によりチェック状態がフォーカスのある
コントロールに設定されてしまいます。

普通にTRadioButtonでも再現できるので、適当に配置し、RadioButton1.SetFocus とかすると、
フォーカスの点線もついて、チェックもOnになります。
RadioButton1.Checked := True では、チェックがOnになりますが、フォーカスの点線はありません。
・・・と思いましたが、Windows7では、フォーカスの点線が出ませんでした???
えと、クラシック表示とかWindowsXPあたりで確認してみてください。

そんなわけで

Form2.RadioGroup1.ItemIndex:=1;

Form2.RadioGroup1.Controls[1].Perform(WM_SETFOCUS, 0, 0);

に変えてみると、動いてくれたりします。

でもForm2を開いたまま、Form2上のButtonClickイベントあたりに
 RadioGroup1.Controls[1].Perform(WM_SETFOCUS, 0, 0);
とか書いてしまうと、非常に紛らわしいことになります。


情報源は他にあったと思いますが、みつからなかったので、参考資料。
RadioGroupの初期値書き込みに関して
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201007/10070024.txt

ではでは〜。


[6189] Re2:RadioGroupについて返信 削除
2012/7/9 (月) 18:45:49 Mr.XRAY
▼ おかぽんさん,どうもです.

> 解決した頃に出てきて恐縮ですが、RadioButtonは、フォーカスを受け取るだけで
> チェックがついてしまう、ちょっと素敵で、でも困った仕様があります。
> 当方、相変わらずDelphi5ですが、最新版も同じなんでしょうか?


解決なのかな? まっ,雑談系ですから関係ないですね (^^)
では,最新版を持っている私が(エッヘン!)後でテストしてみます.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82