有两个窗体,form1,form2
应用程序启动时进入主窗体form1,form2 为从属窗体:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show ;
end;当主窗体form1最小化时所有窗体(即form2),也不见了,如何才能让form1最小化不影响form2?或者说form2继续在显示在屏幕上?
应用程序启动时进入主窗体form1,form2 为从属窗体:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show ;
end;当主窗体form1最小化时所有窗体(即form2),也不见了,如何才能让form1最小化不影响form2?或者说form2继续在显示在屏幕上?
解决方案 »
- 用post或execsql数据表插入的问题,在线等待
- 谁有 opendwg 的 DWGdirectX 1.13 高分求取
- 高分送,Delphi中调用VC编写的dll窗体
- 大家帮忙抉择~!
- 怎么设置数据查询状态?
- SQL除零怎么办?
- delphi组件开发,高手们请指教..
- 许久没上CSDN,本人近期遇到一个十分苦恼的问题!送分200!
- 为何我的Datetimepicker在对年份进行编辑时会出错?
- 新手 DELPHI 下怎么制作课程表表格
- ClassName为TStringGrid的控件(网格控件)我想用SendMessage(hwnd, WM_GETTEXT,length, 0)得到它内部单元格的值
- ClassName为TStringGrid的控件,我想用SendMessage(hwnd, WM_GETTEXT,....)得到它内部单元格的值
如下:
(其他窗体).Parent:= GetDesktopWindow();
或 (其他窗体).Parent:= NULL;
=========================================
报错:
Incompatible "TWinControl" and "HWND"于是我改为:self.Parent.Handle:=GetDesktopWindow();
结果:Can't assign a readonly property
(其他窗体).ParentWindow:= GetDesktopWindow();
procedure TForm2.FormCreate(Sender: TObject);
begin
self.ParentWindow:=GetDesktopWindow();
end;之后我发现Form2窗体上菜单不见了!显示不出来了。
================================我的窗体本来就不是MDI窗体啊?
procedure CreateParams(var Params: TCreateParams);override;procedure TForm2.CreateParams(var Params: TCreateParams); //避免主form最小化时form2跟着最小化
begin
inherited CreateParams(Params);
Params.Style := (Params.Style or ws_Popup) and not ws_Caption;
Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
Params.WndParent := GetDeskTopWindow;
end;
如果非要那么做的话 可以拦截主窗体的 最小话消息
先让他最小化,然后所有子窗体 SHOW;
begin
if msg.WParam=SC_MINIMIZE then
begin
form1.WindowState:=wsMinimized;
form2.Show;
end else
inherited;
end;
procedure CreateParams(var Params: TCreateParams); override;procedure Form2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := 0;
end;
=============================其实就如同“金山词霸”中的“生词本”,
“金山词霸”最小化缩到托盘中时,
“生词本”仍然在屏幕上不受影响。