Per*_*xus 2 delphi vcl taskbar
当我在Delphi 2006中创建一个新的VCL应用程序并运行它时(不添加任何我自己的代码或引用我自己的任何单元),应用程序将不会在其任务栏的上下文菜单中拥有所有菜单项.按钮.然而,应用程序的系统菜单(左键单击表单图标时获得的菜单)具有所有常规菜单项.正如您在以下屏幕截图中看到的那样,前者缺少Move(Verschieben),Size(Größe ändern)和Maximize(Maximieren)

我无法在Delphi XE(我可以访问的Delphi的唯一其他版本)中重现这一点,我也没有发现任何其他人报告此行为.
我还查看了属性TForm以及TApplication是否有一个控制这些菜单,但没有找到一个.
我所知道的所有应用程序在这两个菜单中都有相同的菜单项,我也希望我的应用程序也可以.如何让这两个菜单显示相同的项目集?
不同之处在于Application.MainFormOnTaskBar,这是D2007中引入的一个属性,它自动设置为True.
为了在早期版本中获得相同的效果,我总是使用以下方法:
Project.dpr:
uses
Windows,
...
Application.CreateForm(TMainForm, MainForm);
ShowWindow(Application.Handle, SW_HIDE);
Application.Run;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
这仅在MainForm.Visible设置True设计时间时有效.
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |