怎样使Form Stay On Top?(50分)

  • 主题发起人 主题发起人 hejiesi
  • 开始时间 开始时间
H

hejiesi

Unregistered / Unconfirmed
GUEST, unregistred user!
把Form的FormStyle设成fsStayOnTop, 当程序只有一个Form时,
这个Form能很好的Stay On Top但如果程序有两个Form时,并且
两个Form同时存在,就算你把这两个Form的FormStyle都设成
fsStayOnTop,它们都不能Stay On Top,有什么办法解决?
 
焦点只有一个,你能同时放两个吗?
 
你到底要哪一个在最上面,你的问题有点自相矛盾
 
我的目的是像Winamp那样,凡是自己的程序所产生的Form都不被其他的程序所掩盖,
至于自己程序的窗体之间的关系怎样不用考虑。
 
不可能有两个always on top
 
例如一个程序有两个Form,如果只把主Form设成Stay On Top 那么主Form能Stay On Top,
如果只是把子Form,或把两个Form都设成Stay On Top那么这两个Form都会被其他的程序
所掩盖,我的目的是只要使子Form能够Stay On Top就行了。
 
能不能用bringtofront来实现,我没试过,仅供参考。 :)
 
bringtofront也不好
 
跟消息有关吗
 
我把两个FORM设置为STAYONTOP可以的啊!两个FORM都在最上层,但两个窗体内部可以相互覆盖!
 
To gcp:
我新建一个Project,然后再加入一个Form(form2),把两个Form都设成stayontop
然后再Form1上加入一个按钮,在按钮的Click事件中写 Form2.show;
当Form2显示出来后,原先能Stayontop的Form1也会被别的程序覆盖,
这样两个Form都不能stayontop,你的是怎样做的,是不是有一些属性要设置,
可不可以做一个例子给我,hejiesi@netease.com.
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
form2.FormStyle := fsStayOnTop;
form1.FormStyle := fsStayOnTop;
end;

end.




unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.FormCreate(Sender: TObject);
begin
form2.FormStyle := fsStayOnTop;
form1.FormStyle := fsStayOnTop;
end;

end.
 
不过,我开SINAPAGER时会出错!你试试吧!
 
不好意思,我错了!:)
 
fsStayOnTop:(截取帮助,还是用个变通的方法试试吧) :(
This form remains on top of the desktop and of other forms in the project,
except any others that also have FormStyle set to fsStayOnTop.
If one fsStayOntop form launches another, neither form will consistently
remain on top.

If the form is the main form of an MDI application, its FormStyle property must be set to fsMDIForm.

Note: It is not advisable to change FormStyle at runtime.
 
有什么Windows的API跟这个问题有关
 
使用
SetWindowPos(handle,hwnd_TopMost,0,0,0,0,swp_NoMove or swp_NoSize)
另外,如果也有其他程序是top时,则在form失去焦点时强制再调用API
 
接受答案了.
 
后退
顶部