我要实现像QQ窗体一样的效果,但这个窗体不是主窗体,是一个子窗体,通过show调用,但子窗体打开以后,我点一个按钮才实现这个效果(把子窗体放在最上层),我点另外一个窗体则不变成普通的效果了!
怎么实现?
怎么实现?
解决方案 »
- 初学者求助 rave报表问题
- 如何在MessageBox对话框中的提示信息中使用变量?
- 新手,有那位大虾肯帮忙!在下感激涕零
- midas服务器当客户端连接到12个时出错:“insufficient memory for this operation",高分求助100分不够200分
- 我在delphi中遇到问题
- 如何快速进入DELPHI
- 怎么在桌面做一个悬浮窗口,像网际快车最小化时桌面上的那样
- 請問與這條語句 GetKeyboardLayoutName(S); 相關的這段代碼是是麼意思??? 誰幫我看看
- 紧急求助!!!
- http://webplay.myrice.com中的控件已可正常下载了
- 大家来讨论讨论!
- 关于pagecontrol控件的问题
重载也没有实现
Public
procedure Createparams(Var Params:TCreateParams);override;
实现:
procedure TFormDrop.Createparams(var Params:TCreateParams);
begin
Inherited CreateParams(Params);
With Params do
begin
EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES or WS_DLGFRAME;
wndParnet:=GetDesktopWindow;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.formstyle:=fsstayontop;
end;
这就可以了
SetWindowPos(你的置顶form.Handle,HWND_TOPMOST,你的置顶form.Left,你的置顶form.Top,你的置顶form.Width,你的置顶form.Height,SWP_SHOWWINDOW)
当我们想让一个窗体保留在桌面的最上面时,可以定义窗体的FormStyle属性,使窗体保持在最上面。但是,使用这种方法后,在切换窗体的模式时,窗体将闪烁。为了避免切换窗体模式时的闪烁,可以使用Windows API函数SetWindowPos来解决这一问题,使用方法如下:
SetWindowPos(Form1.handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
用实际窗体名称代替"Form1",调用这个命令就可以将窗体设置为保留在桌面的最上面。如要将窗体切换回正常的窗体,调用下面的命令:
SetWindowPos(Form1.handle, HWND_NOTOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
我的程序开始时能够把别的窗体盖住,但是在调用程序中别的窗体A后,qq总是跟随着新窗体A跳出来.于是我不得不在A出来前,把程序得主窗体setwindowspos 一下,在把A setwindowpos一下,这样虽然可以盖主qq的主窗体,但是在程序中使用messagedly时,他依然能跳出来,我都要晕了