delphi里关于project运行的问题!!!

xiaoshitou 2001-08-04 12:20:20
我是个初学者,小小问题希望大家指点一下!!
在项目文件运行时,我需要通过窗体中的单选框来建立不同的窗体。这里不是动态的建立窗体。
比如,先建立一个窗体,然后需要通过这个窗体里的单选框的真假来判断建立两类不同的窗体,但这个需要用户来选择,也就是说需要运行最初的这个窗体,这个到不成问题,但这第一个窗体不仅有单选的功能,还有其它的,比如需要输入密码,如果不输入密码,程序可以运行,仅仅是判断单选框而建立相应的各个窗体。但如果输入密码,这时按确定后就需要调用其它窗体,而这时这些窗体还未建立,此时就会出错。(不在这个窗体中根据这里的条件创建窗体,而是要在项目文件中创建)

我的问题是,怎样在项目文件中判断后建立不同的窗体,具有刚开始动态建立窗体的作用而又不是真的动态建立。(窗体的建立都是在这里实现的,在其它窗体中只是显示而已)

有点罗嗦,不知能不能看懂,因我是刚刚学,很多基础还是不知道,希望各位指点一二,谢了!!!!
...全文
129 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoshitou 2001-08-19
  • 打赏
  • 举报
回复
很有启发
这个登录文件和在单元文件有区别吗?
xiaoshitou 2001-08-19
  • 打赏
  • 举报
回复
又加了10分,以示感谢,今后望多多帮助!!!!
xiaoshitou 2001-08-19
  • 打赏
  • 举报
回复
谢谢大家,给分了!!!
xjg 2001-08-19
  • 打赏
  • 举报
回复
你可以在用户选择之后再动态建立窗体
可以这么说,除了主窗体外,其他窗体都是在需要显示的时候建立的
显示完成后可根据具体情况考虑是否释放。
xiaoshitou 2001-08-19
  • 打赏
  • 举报
回复
那我上边说的那种情况,有错吗?
是不是实现这样的功能还是得在单元文件里呢。。。?
dsyxl 2001-08-19
  • 打赏
  • 举报
回复
本质上是没有什么区别的
Kingron 2001-08-18
  • 打赏
  • 举报
回复
海,你会不会动态建立窗体?会的话,就简单了!!!!!!
LuckyJan 2001-08-18
  • 打赏
  • 举报
回复
(1)项目文件
Application.Initialize;
select case Login() do
1:Application.CreateForm(TForm1, Form1);
2:Application.CreateForm(TForm2, Form2);
...
end;
Application.Run;
(2)登陆文件
function Login():integer;
begin
Application.CreateForm(TFrm_Login, Frm_Login);
if Frm_Login.showModal=mrOK then begin
//判断条件,返回函数值
result:=...;
end;
frm_login.free;
end;
xiaoshitou 2001-08-18
  • 打赏
  • 举报
回复
是要判断,只是因为在form1中如果还输入密码,就要使用到还没有建立的Form,但这是非法的,,对吗?但如果不在这里判断的话,就得先建立一些需要用到的form,
其实不按这个要求做也能实现,只是因为书中有这个例子,就是在项目文件中做判断的,而且他连form1都没有建立就判断了,那样就直接根据checked的默认值进入了,我觉得也不对。因为他判断的这个条件可是需要人去选择的啊。。。。。。
糊涂。。。。。。
xiaoshitou 2001-08-18
  • 打赏
  • 举报
回复
对啊,动态建立是可以的,当然也是常用的方法了
只是这样在项目文件中判断条件建立,是否可取,这个例子是不是真的有问题
光明山人 2001-08-17
  • 打赏
  • 举报
回复
Application.Initialize;
Form1 := TForm1.Create( Application );
Form1.ShowModal; // 也许你想判断其返回值
if form1.checkbox1.checked=false then
begin
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.Run;
end
else
.................
end.
xiaoshitou 2001-08-17
  • 打赏
  • 举报
回复
好久的问题,有人再帮我看看吗?
qq_13439718 2001-08-04
  • 打赏
  • 举报
回复
建3个,
按条件打开其中一个不就好了
WilliamGui 2001-08-04
  • 打赏
  • 举报
回复
不知你在說什么
xiaoshitou 2001-08-04
  • 打赏
  • 举报
回复
建3个什么?
这个条件是判断是否建立某些窗体的,但如果在进行选择时还做了其它的输入(就是判断的这个窗体时,只有这一个窗体被建立),因要引用的窗体还没有建立,所以会出错。就是下边的内容:program Project1;

uses
Forms,
Unit100 in 'Unit100.pas' {Form1},
Unit101 in 'Unit101.pas' {DataModule1: TDataModule},
Unit102 in 'Unit102.pas' {Form2},
Unit103 in 'Unit103.pas' {Form3},
Unit104 in 'Unit104.pas' {Form4},
Unit105 in 'Unit105.pas' {Form5},
Unit106 in 'Unit106.pas' {Form6},
Unit107 in 'Unit107.pas' {Form7},
Unit108 in 'Unit108.pas' {Form8},
Unit109 in 'Unit109.pas' {Form9},
Unit110 in 'Unit110.pas' {Form10};

{$R *.RES}

begin
Application.CreateForm(TForm1,Form1);{建立后如果不运行,不能和用户交互选择,而 直接进入某一选择的分支,就是说checkbox1.checked的值初始值如果为False,它总是会自动进入下面的程序段建立各个窗体,没有选择的机会。所以在这里运行form1,此时可以选择,但。。。除了选择不能做其它的输入,因为和这些输入有关的窗体还未建立}
if form1.checkbox1.checked=false then
begin
Application.Initialize;
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.Run;
end
else
.................
end.
不知这样说是否明白,

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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