我々はのDelphi 2007アプリケーションを持っており、最近Windows Aeroのサポートを強化するためにMainFormOnTaskBarを有効にしました。しかし、クリックするとメインフォームがすべての子フォームの一番上に来ることはないので、次のコードを追加しました。このDelphiアプリケーションのメインフォームは、前面に一時的にフリックする
procedure TBaseForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := 0;
end;
1つの副作用は、再び戻って、フロントにその特定のホットキーメインフォームフリックを処理していない子フォームにAltキー + キーホットキーを押したときにということです。ホットキーが処理されると、ホットキーが飲み込まれた可能性が高いため、この動作は発生しません。
誰かがこの現象を経験しており、回避策をアドバイスできますか?別のフォームがアクティブになっている場合でも、あなたは、メインフォームのメニューからメニュー項目を選択することができるように
おかげ
'MainFormOnTaskbar'が真のときに' CreateParams() 'をオーバーライドする必要はありません。基本実装では、すでに同じ値が設定されています。 'MainForm'をクリックすると、クリックされたときに上部に移動します。これは通常のウィンドウの動作です。 –
@Remy - MainFormOnTaskbarがtrueの場合、すべてのセカンダリフォームはメインフォームによって所有されます。これにより、メインフォームがセカンダリフォームの前に入らなくなります。 –
あなたはおそらく他の問題にもぶつかるでしょう。回避策セクションの[こちら](http://qc.embarcadero.com/wc/qcmain.aspx?d=49410)を参照してください。おそらく他の人もそうです... –