关于工程文件的疑问

zhengyc653 2012-08-15 09:36:11
请教几个Delphi主窗体的问题:
1、我观察了一下Main form 这个选项的设置,凡是设为 Main form 的窗体都排在工程文件的最前面。如果手动把一个窗体的Application.CreateForm代码排在最前面,这项目的 Main Form 也随之变为这个窗体。那么: Main Form 的作用就只是第一个窗体这么简单吗?
2、是不是设为 Main form 的窗体关闭之后就视为程序退出?
3、示例代码:

Application.Initialize;
Application.CreateForm(Tdata1, data1);
frm_Login := Tfrm_Login.Create(Application);
if frm_Login.登录成功 then
begin
frm_Login.Free;
Application.CreateForm(Tfrm_main, frm_main);
Application.Run;
end
else begin
frm_Login.Free;
end;

这里的 Application.Run又是怎么回事?之前的Tfrm_Login.Create,它也是一个窗体,怎么就无需Application.Run?如果按照上面这段代码来设置工程文件的话,那项目的 Main form 这个选项就会自动变为空,这样对程序有影响吗?Application.Run 是用来做什么的?执行程序并显示主窗体吗?
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-08-16
  • 打赏
  • 举报
回复
1.Main Form选项是和你工程文件对应的,任何一方改变了,相应的一方也会改变
如果Main Form选项有值,那么这个就是主窗体,如果没有就看工程文件的执行顺序
比如你这段代码
Main Form是没有值的,frm_Login是第一个要执行的窗体,但在Run这前他关闭了,所以不算
那么就到frm_main了,所以frm_main是主窗体

2.D规定第一个启动的窗体就是主窗体,主窗体关闭了程序就结束了

3.Run是程序开始运行,进入消息循环,不断的检查消息队列,提取消息,然后根据这些消息作出相应的操作
酣酣 2012-08-15
  • 打赏
  • 举报
回复
进入消息循环吧!
可以跟进代码看一看的呀!
procedure TApplication.Run;
begin
FRunning := True;
try
AddExitProc(DoneApplication);
if FMainForm <> nil then
begin
case CmdShow of
SW_SHOWMINNOACTIVE: FMainForm.FWindowState := wsMinimized;
SW_SHOWMAXIMIZED: MainForm.WindowState := wsMaximized;
end;
if FShowMainForm then
if FMainForm.FWindowState = wsMinimized then
Minimize else
FMainForm.Visible := True;
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
end;
finally
FRunning := False;
end;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧