17. 11.
所有的窗体都是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事件
我试了一下放在TMainForm.FormCreate中不行啊
请问我该怎么做啊,请帮帮我啊
白打了半天字,超时。。。
办法:在工程中动态创建LoginForm 验证通过后再创建主窗体,其他窗体也都动态创建
不是很明白你的意思,猜测一下,主窗体上有某个按钮或者菜单是调用B窗口的,里面的事件写了将主窗口隐藏,OK,我们这样:
procedure TMainForm.FormShow(Sender: TObject);
begin
if not LoginForm.hasLogin then //hasLogin是在LoginForm定义的一个public变量,登陆成功后,必须初始LoginForm:= true;
LoginForm.ShowModal;
end;
这样,主窗体再次显示时,不会再调用登陆窗体了
打错了,是把hasLogin := true; =.=!!!!
楼上说的很感激啊,你说的没有错,不过我有两个窗口都要用在主窗口隐藏后到时候再重新显示主窗口,但是一个能顺利能重新显示,并能正常操作,但是另一个虽然回到了主窗体,也显示了主窗体,但是却是死到那里了,不能动了,就像死循环了死的,点击任何菜单或者按钮都没有反应。
这两个窗体里面用于重新显示主窗体的按钮里面的代码,是一样的啊,都是: MainForm.Visible:=true;
为什么一个实现了,一个却是死循环啊,主窗口里面的东西点都点不了