When ShowModal is called, all existing top-level windows are disabled. This is how modality is designed to work. If you have a window with which interaction is reasonable, you just need to turn it on again.
For example, you can add this to your utility window:
type TMyUtilityForm = class(TForm) protected procedure WMEnable(var Message: TWMEnable); message WM_ENABLE; end; .... procedure TMyUtilityForm.WMEnable(var Message: TWMEnable); begin if not Message.Enabled then EnableWindow(Handle, True); inherited; end;
This ensures that your utility window is never disabled.
David heffernan
source share