2

Delphi 2006で新しいVCLアプリケーションを作成して実行すると(独自のコードを追加したり、独自のユニットを参照したりせずに)、アプリケーションには、タスクバーのコンテキストメニューに期待されるすべてのメニュー項目が含まれません。ボタン。ただし、アプリケーションのシステムメニュー(フォームのアイコンを左クリックすると表示されるメニュー)には、通常のメニュー項目がすべて含まれています。次のスクリーンショットでわかるように、MoveVerschieben)、SizeGröße ändern)、MaximizeMaximieren)は前者から欠落しています

ここに画像の説明を入力してください ここに画像の説明を入力してください

これをDelphiXE(私がアクセスできるDelphiの他の唯一のバージョン)で再現することはできませんでした。また、この動作を報告している人も他にいませんでした。

また、これらのメニューを制御するためのプロパティTFormTApplication存在するかどうかを調べましたが、見つかりませんでした。

私が知っているすべてのアプリケーションには、これら2つのメニューに同じメニュー項目のセットがあり、アプリケーションにも実行してもらいたいと思います。これらの2つのメニューで同じアイテムのセットを表示するにはどうすればよいですか?

4

2 に答える 2

6

違いは、自動的にTrueに設定されるD2007で導入されたプロパティであるApplication.MainFormOnTaskBarにあります。

以前のバージョンで同じ効果を得るには、常に次のアプローチを使用します。

Project.dpr:

uses
  Windows,
  ...

  Application.CreateForm(TMainForm, MainForm);
  ShowWindow(Application.Handle, SW_HIDE);
  Application.Run;

FMain.pas:

  TMainForm = class(TForm)
  private
    procedure WMSysCommand(var Message: TWMSysCommand);
      message WM_SYSCOMMAND;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  ...

procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopWindow;
  end;
end;

procedure TMainForm.WMSysCommand(var Message: TWMSysCommand);
begin
  if Message.CmdType = SC_MINIMIZE then
    ShowWindow(Handle, SW_MINIMIZE)
  else
    inherited;
end;

これは、が設計時MainForm.Visibleに設定されている場合にのみ機能します。True

于 2012-04-14T09:36:10.363 に答える
1

D2006では、タスクバーボタンはウィンドウが所有していTApplicationます。タスクバーボタンをクリックすると、TApplicationシステムメニューが表示されます。これは、VCLによって変更され、[最大化]、[サイズ]、および[移動]メニュー項目を常に削除します。TForm一方、をクリックすると、フォームのシステムメニューが代わりに表示されます。これは、フォームBorderStyleBorderIconプロパティに応じてVCLによって変更されます。つまり、実際には、2つの別々のウィンドウに対して2つの別々のメニューを扱っています。

TApplication.ShowMainFormOnTaskbar新しいプロパティがに設定されている最新のDelphiバージョンでは、タスクバーはではなくtrueによって所有されているため、[タスクバー]ボタンをクリックすると、システムメニューではなくフォームのシステムメニューが表示されます。したがって、この場合、実際には1つのウィンドウに対して1つのメニューを処理しています。TFormTApplicationTApplication

于 2012-04-18T22:01:39.033 に答える