喫茶XRAYトップページ

[スレッド全体
]

[905] 「MessageDlg」の躓き返信 削除
2006/9/6 (水) 09:00:52 Syake
さてさて、
FormのOnActiveイベントで
***************************************
begin
   if 条件A then
   begin
      if 条件B then
      begin
         if MessageDlg(XXXX,mtInformation,mbYesNo,0) = mrYes then
         begin
            Edit3.Text := 'XXX';
         end;
      end;
      Edit1.SetForcus;
   end else begin
      Edit2.SetForcus;
   end;
end;
*************************************
さして、複雑でも何でもないのですが
@条件Aに該当しなかったらEdit2に正常にフォーカスが移る
A条件Aに該当し、条件Bに該当しなかったらEdit1に正常にフォーカスが移る
まあここまでは、思った通り。
Bところが、条件Aと条件Bに該当した場合にはMessageDlgを開くわけですが
 その後、なんとEdit1にフォーカスが移らない???
 ダイアログの戻り値がmrNoでも移らない。 何故だぁ〜。
 ダイアログが閉じた後、Edit1をクリックしても反応しない
 (カーソルが表示されない)
 他のEditをクリック後にEdit1をクリックするとカーソルが表示される。
 試しに、Edit1をEdit2に変えるとEdit2にはフォーカスが移る。

んで、苦し紛れに・・・
***************************************
begin
   if 条件A then
   begin
      if 条件B then
      begin
     frmMyDlg := TfrmMyDlg.Create(Application);
         try
            frmMyDlg.XXX := XXXX;
            frmMyDlg.ShowModal;
            if frmMyDlg.xxxxx then
            begin
               Edit3.Text := 'XX';
            end;
         finally
            frmMyDlg.Release;
         end;
      end;
      Edit1.SetForcus;
   end else begin
      Edit2.SetForcus;
   end;
end;
*************************************
と、自前で作成したところ何事も無かったかのように正常に動作する。
う〜む、何なんだろう。



[906] Re:「MessageDlg」の躓き返信 削除
2006/9/6 (水) 19:41:43 Mr.XRAY
▼ Syakeさん

えっ,そうなんですか.ってそうなんですよね.
いままで気づきませんでした.結構MessageDlg使っています.

OnActiveでの使用が問題なのかな.
要調査課題ですね.

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