5

これは、表示された後に非表示になったが解放されていない子フォームを持つ Delphi アプリケーションに関係しています。ユーザーがアプリケーションの (Windows 10) タスクバーの「ミニビュー」にカーソルを合わせると、非表示のフォームが表示されます (ホバー中に)。ユーザーがミニビューをクリックしてフォーカスを変更すると、非表示になります。アプリケーション。これを回避する方法はありますか?

再作成するには:

  1. 新しい VCL フォーム アプリケーションを作成します。
  2. プロジェクトに新しいフォームを追加し、自動作成に設定します。
  3. 表示するボタンを追加して、フォームを非表示にする (または ShowModal で開く)
  4. アプリケーションを実行する
  5. ボタンをクリックして 2 番目のフォームを表示し、それを閉じます。
  6. アプリケーションのタスクバー ボタンにカーソルを合わせると、メイン ウィンドウのミニビューが表示されます。
  7. ミニビューの上にマウスを置き、非表示のウィンドウがメイン フォームの上に表示されることを確認します。

アプリケーションを最小化して復元すると、次回フォームが表示されるまで影響が「修正」されることに注意してください。おそらく、それは何が原因なのか、または回避策の手がかりになるのでしょうか? これは実際の問題を引き起こしていないように見えるため、大きな問題ではありませんが、プロフェッショナルではないように見えます.

要求に応じてコードを追加します (ただし、あまり興味深いものではありません)。

program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

// Only code that was added to TForm1:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Show and then hide the form or use ShowModal and close it before testing the hover.
  Form2.Show;
  Form2.Hide;
  // Form2.ShowModal;
end;

更新: Delphi IDE だけを使用して問題を表示する方法。

  1. Delphi を実行する
  2. 任意のコード ファイルを開き、文字列を検索してから、[一致する検索が見つかりませんでした] ダイアログが表示されるまで F3 を使用します。
  3. 手順 2 の「検索結果が見つかりませんでした」ウィンドウを閉じます。
  4. マウスを Delphi タスクバー ボタンの上に置き、ミニ プレビューに移動します。
  5. Delphi のメイン ウィンドウの上に「Search Match Not Found」ウィンドウが表示されます。ベルリンと東京(10.2.1)でこれを確認しました
4

1 に答える 1