我有两个窗体,主窗体是 MainWindow,非主窗体Form2是动态创建的:
procedure TMainWindow.Button12Click(Sender: TObject);
begin
Application.CreateForm(TForm2,Form2);
Form2.ShowModal;
Form2.Free;
end;当需要最小化Form2时,发现窗体不是最小化到任务栏,而是缩小到桌面左下脚。
请问有何办法让Form2最小化到任务栏,以便操作方便。谢谢!
procedure TMainWindow.Button12Click(Sender: TObject);
begin
Application.CreateForm(TForm2,Form2);
Form2.ShowModal;
Form2.Free;
end;当需要最小化Form2时,发现窗体不是最小化到任务栏,而是缩小到桌面左下脚。
请问有何办法让Form2最小化到任务栏,以便操作方便。谢谢!
......
private
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
......
end;procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType = SC_MINIMIZE then
Self.Hide
else
inherited;
end;
加上以上代码之后,Form2最小化后将不会在桌面上留下有任何东东,Form2重新显示需要使用代码来完成,即Form2.Show。
另外,我的窗体使用了bsBusinessSkinForm控件,好象消息没有作用(Form2还是缩小到桌面左下脚)procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType = SC_MINIMIZE then
Self.Hide
else
inherited;
end;
begin
inherited;
Params.WndParent := GetDesktopWindow();
end;
有朋友改过它的原代码吗?
begin
bsBusinessSkinForm1.MinimizeDefault := true;
end;具体原因你自己看看源码吧:
procedure TbsBusinessSkinForm.DoMinimize;
修改了unit BusinessSkinForm;
procedure TbsSkinStdButtonObject.DoMin;
begin
{if Parent.WindowState = wsMinimized
then Parent.WindowState := wsNormal
else Parent.WindowState := wsMinimized; }
//2008.4.22修改:最小化窗体回到任务栏
Parent.FForm.WindowState:= wsMinimized;
end;
再加上clasj 兄的方法:procedure CreateParams(var Params: TCreateParams); override; procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := GetDesktopWindow();
end;实现了需求,贴出来也许对大家有帮助哈!
再次感谢各位的帮忙,谢谢!