procedure TForm1.ShowForm2;
begin
Self.Enabled := False;
try
with TForm2.Create(nil) do
begin
try
if ShowModal = mrOk then
// Returned OK. Do something;
finally
Free;
end;
end;
finally
Self.Enabled := True;
end;
begin
Self.Enabled := False;
try
with TForm2.Create(nil) do
begin
try
if ShowModal = mrOk then
// Returned OK. Do something;
finally
Free;
end;
end;
finally
Self.Enabled := True;
end;
end;
Take a look at the PopupParent property. You may want to set it explicitly for your modal form prior to the ShowModal call. When PopupParent is nil (default) VCL behaves a bit differently depending on the value of the related PopupMode property.
If you set the modal form's PopupParent to the form that's active just before you call ShowModal, that may help.