喫茶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

ではでは〜。


[6190] Re2:RadioGroupについて返信 削除
2012/7/12 (木) 14:57:59 Mr.XRAY
▼ おかぽんさん

スミマセン.ちょっとやってみたたのですが,
よく現象を把握できません.理解していないのかもしれません.

ただ,以下の現象は確認しました.
実際にマウスで,該当Itemをクリックしないと,点線が表示されません.

> フォーカスの点線が出ませんでした???

何か勘違いしているかも...
http://mrxray.on.coocan.jp/Others/TRadioGroup.htm#02


[6216] Re3:RadioGroupについて返信 削除
2012/7/20 (金) 12:12:46 おかぽん
▼ Mr.XRAYさん
遅レスですいません。

XPでもクラシックでないとフォーカス矩形が表示されないのかもしれません。

紛らわしい画像を一枚添付

「22222」をクリック後
RadioGroup1.Controls[3].Perform(WM_SETFOCUS, 0, 0);

これでフォーカスを当てて、チェックを移動したものです。


[6221] Re4:RadioGroupについて返信 削除
2012/7/24 (火) 17:33:43 Mr.XRAY
> これでフォーカスを当てて、チェックを移動したものです。

う〜む.なるほど,
で,Delphi 7, 2010, XE でやってみましたが,なりません.
Delphi 6 でやろうししたら,
「TRadioGroupが見つかりません」
「TButtonが見つかりません」

? あっ,UAC を無効にして,管理者権限に昇格しないでインストール
するテストしたままだった! (笑)

しかし,私のとろこでは,なぜならないの?

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