モーダル ダイアログであっても、アプリケーションを使用しているときにいつでもアクセスできるユーティリティ ダイアログ (非モーダルでトップに留まる) があります (アプリケーションの操作中にメモをとるために使用できるダイアログを考えてください)。が表示されます。
アプリケーションの残りの部分は変更できません。
出来ますか?どうすればそれについて行くことができますか?
がShowModal
呼び出されると、既存のすべてのトップレベルウィンドウが無効になります。これが、モダリティが機能することを意味する方法です。インタラクションが合理的なウィンドウがある場合は、それを再度有効にする必要があります。
たとえば、これをユーティリティウィンドウに追加できます。
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;
これにより、ユーティリティウィンドウが無効になることはありません。