11

モーダル ダイアログであっても、アプリケーションを使用しているときにいつでもアクセスできるユーティリティ ダイアログ (非モーダルでトップに留まる) があります (アプリケーションの操作中にメモをとるために使用できるダイアログを考えてください)。が表示されます

アプリケーションの残りの部分は変更できません。

出来ますか?どうすればそれについて行くことができますか?

4

1 に答える 1

18

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;

これにより、ユーティリティウィンドウが無効になることはありません。

于 2012-10-18T14:43:35.550 に答える