所有的窗体都是Auto-create forms 而非Available forms
然后主窗体是Main
而登陆窗体是Login
另外一个窗体为B
在主窗体显示之前我先来显示Login
代码如下:
procedure TMainForm.FormShow(Sender: TObject);
begin
LoginForm.ShowModal;
end; 这个能正常登陆,当我先让Main窗体隐藏后,即:MainForm.hide;
我想在B窗口中重新显示Main窗体,并将B窗口关闭
代码: MainForm.Visible:=true;B.Close;
但是出现问题:又重新显示登陆窗体了,然后再重新登陆后才能进入主窗口
我知道这是又调用了在TMainForm.FormShow事件 然后我用以下方法
procedure TMainForm.FormShow(Sender: TObject);
begin
if not LoginForm.hasLogin then //hasLogin是在LoginForm定义的一个public变量,登陆成功后,必须初始LoginForm:= true;
LoginForm.ShowModal;
end;
出现这种问题:
不过我有两个窗口都要用在主窗口隐藏后到时候再重新显示主窗口,但是一个能顺利能重新显示,并能正常操作,但是另一个虽然回到了主窗体,也显示了主窗体,但是却是死到那里了,不能动了,就像死循环了死的,点击任何菜单或者按钮都没有反应。这两个窗体里面用于重新显示主窗体的按钮里面的代码,是一样的啊,都是: MainForm.Visible:=true;
为什么一个实现了,一个却是死循环啊,主窗口里面的东西点都点不了
请问我该怎么做啊,请帮帮我啊
然后主窗体是Main
而登陆窗体是Login
另外一个窗体为B
在主窗体显示之前我先来显示Login
代码如下:
procedure TMainForm.FormShow(Sender: TObject);
begin
LoginForm.ShowModal;
end; 这个能正常登陆,当我先让Main窗体隐藏后,即:MainForm.hide;
我想在B窗口中重新显示Main窗体,并将B窗口关闭
代码: MainForm.Visible:=true;B.Close;
但是出现问题:又重新显示登陆窗体了,然后再重新登陆后才能进入主窗口
我知道这是又调用了在TMainForm.FormShow事件 然后我用以下方法
procedure TMainForm.FormShow(Sender: TObject);
begin
if not LoginForm.hasLogin then //hasLogin是在LoginForm定义的一个public变量,登陆成功后,必须初始LoginForm:= true;
LoginForm.ShowModal;
end;
出现这种问题:
不过我有两个窗口都要用在主窗口隐藏后到时候再重新显示主窗口,但是一个能顺利能重新显示,并能正常操作,但是另一个虽然回到了主窗体,也显示了主窗体,但是却是死到那里了,不能动了,就像死循环了死的,点击任何菜单或者按钮都没有反应。这两个窗体里面用于重新显示主窗体的按钮里面的代码,是一样的啊,都是: MainForm.Visible:=true;
为什么一个实现了,一个却是死循环啊,主窗口里面的东西点都点不了
请问我该怎么做啊,请帮帮我啊
procedure TFmain.FormCreate(Sender: TObject);
begin
LoginForm.ShowModal;
end;
一次性的东西应该在Creat下
不知道怎么会事 啊
以前就是用login作为Auto-create forms ,并且为主窗口,其他的都是Available forms
这样,在登陆键里打开主窗口
其他的都是Available forms 这样,在登陆键里先create其他窗口,再show
procedure TmainF.FormShow(Sender: TObject);
begin
if not loginF.HasLogin then
loginF.ShowModal;
end;procedure TmainF.Button1Click(Sender: TObject);
begin
mainF.Hide;
form3.ShowModal; //第一个跳出窗体
mainF.Visible:=true;
end;procedure TmainF.Button2Click(Sender: TObject);
begin
mainF.Hide;
form4.ShowModal; //第二个跳出窗体
mainF.Visible:=true;
end;<Form3> 关闭事件
procedure TForm3.Button1Click(Sender: TObject);
begin
modalresult := mrok;
end;<Form4> 关闭事件
procedure TForm4.Button1Click(Sender: TObject);
begin
modalresult := mrok;
end;<project1.dpr 工程文件>
Application.Initialize;
Application.CreateForm(TmainF, mainF);
Application.CreateForm(TLoginF, LoginF);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.Run;
先把LoginF窗体设为Available forms
project1.dpr
{$R *.res}begin
Application.Initialize;
try
LoginF := TLoginF.Create(Application);
LoginF.ShowModal;
finally
LoginF.Free;
LoginF:= Nil;
end;
Application.CreateForm(TMainF, MainF);
Application.Run;