怎样把一个非主窗口置在最前面?(100分)

  • 主题发起人 主题发起人 book523
  • 开始时间 开始时间
B

book523

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题是:开始出现一个登陆界面,登陆成功后进入业务处理界面,登陆界面隐藏(只是隐藏,没有
free,后面可能还要用),要求把业务处理界面放在所有windows窗口的最上面,登陆界面和业务处理界面
应该怎么做才能达到要求?我试了下面几个方法,结果都不行。
1。两个窗体的的formstyle都设为fsStayOnTop, 结果不行。
2。其中任一个窗体的formstyle设为fsStayOnTop,结果也不行。
3。用api函数 SetWindowPos(form1.Handle,HWND_TOPMOST,0,0,200,200,(SWP_NOACTIVATE) or (SWP_NOSIZE)) 设置
一个窗体或两个都设置,也不行!
 
在Form的oncreate事件中加入
Application.OnDeactivate := SetactiveWindow(Handle);
 
那个窗体?登陆还是业务?还是都要?
 
to yb_unique:
;怎么该语句编译不过啊?[?]
 
Form.FormStyle :=fsStayOnTop;
这个问题好像人家刚讨论过。
 
转贴一篇!

何使Form位于所有窗体最前

  在设计程序界面时,有时要求某一窗体不能被任何其它窗体遮盖,即使它失去焦点。对于应用程序主窗体来说,可以通过在物体属性栏(Object Inspector)
中设置窗体的FormStyle属性为fsStayOnTop来实现;但是对于多窗体应用程序(MDI)中主窗体产生的子窗体而言,这一方法的效果是相对有限的,因为此法只能
使该子窗体位于本应用程序其它窗体的最前端,当Windows 95桌面上别的应用程序窗体获得焦点后仍可以将其遮盖。如果您需要应用程序子窗体拥有绝对的位于
所有窗体最前的能力时,可以参照下法进行(假定由主窗体事件产生的子窗体为Form2,对应的程序组名为Unit2):

  1.在Unit2中窗体类声明public段下定义一个处理过程:

  procedure AppBringtoTop(Sender:TObject);

  2.在Form2的oncreate事件中加入*句如下:

  procedure Tform2.FormCreate(Sender:TObject);

  begin

   Application.OnDeactivate :=AppBringtoTop; //*

  end;

  3.编写AppBringtoTop过程程序如下:

  procedure TForm2.AppBringtoTop(Seader:TObject);

  begin

   SetactiveWindow(Handle); //API函数,将本窗体提至最前

  end;

  ●说明:Application是Delphi对用户创建的应用程序的封装,为TApplication类,如同TForm等一样,TApplication也有其自己的属性与事件定义,其中
Application.OnDeactivate事件在用户开启其他应用程序而将会使本应用程序为Deactivate时产生,正确地对该事件编程即可实现本窗体(Form2)始终位于最前;
另外由于TApplication是不可见控件,同时它的属性与事件均没有列入物体属性栏中,因而需要在程序段中编写代码来进行描述。编写TApplication的事件过程
时要按下述原则进行:A?在执行段implementation中编写好事件处理过程;B?在interface段中声明该事件处理过程;C?在该窗体的FormCreate事件中定义所
需的Application事件响应为B中声明的过程名。
 
to bbs_delphi:
; ; 这个方法好象不行啊,假如只要实现登陆窗口在最前面,这样设置就行,可现在我要求
业务界面在最前面,而登陆界面隐藏(不能free)啊,这样好象就不行了!
 
菜单下选project/view source
在主窗体CreateForm前可以show任何窗体
 
把业务处理界面设为主窗口
 
begin
; ; ; ; Login.Visible:=False;
end;
 
终于行了,YB_unique的方法果然行,在这里谢谢大家了!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部