工程自动创建mainform,mainform窗体创建后,调用loadform窗体。
loadform的FormStyle设为 fsStayOnTop
可是每次出来loadform窗体是在最上面,当前焦点却在mainform,要自己再在loadform窗体上用鼠标点击一下才能把焦点设过来。有什么办法直接设loadform窗体为焦点??
loadform.SetFocus;不行。
loadform的FormStyle设为 fsStayOnTop
可是每次出来loadform窗体是在最上面,当前焦点却在mainform,要自己再在loadform窗体上用鼠标点击一下才能把焦点设过来。有什么办法直接设loadform窗体为焦点??
loadform.SetFocus;不行。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
const
WM_MYSHOW=WM_USER+100;
type TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure WMMYSHOW(var msg:TMessage);message WM_MYSHOW;
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses
unit2;
{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(self.Handle,WM_MYSHOW,0,0);
end;procedure TForm1.WMMYSHOW(var msg: TMessage);
begin
form2:=TForm2.Create(Application);
form2.Show;
end;end.
我调用loadform窗体,不是在mainform的OnCreate也不是在OnShow里面。而是另外写了一个函数。然后在工程文件里调用。如下:
Application.CreateForm(TMainFrm, MainFrm);
MainFrm.login();//这个函数调用loadform。
Application.Run;
loadform.SetFocus;
loadform.WindowState:=wsNormal;
TO: flyforlove(为情飞)
我调用loadform窗体,不是在mainform的OnCreate也不是在OnShow里面。而是另外写了一个函数。然后在工程文件里调用。如下:
Application.CreateForm(TMainFrm, MainFrm);
MainFrm.login();//这个函数调用loadform。
Application.Run;
=================================================一样的,主函数的显示是在Application.Run;中执行的,也就是说焦点总是会返回给主窗体。
谢谢。你这方法可行。。