さてさて、
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;
*************************************
と、自前で作成したところ何事も無かったかのように正常に動作する。
う〜む、何なんだろう。
|