两个菜问题 ( 积分: 100 )

  • 主题发起人 主题发起人 publicnews
  • 开始时间 开始时间
P

publicnews

Unregistered / Unconfirmed
GUEST, unregistred user!
1:
有多个窗体从一个窗体Base继承,每个窗体上都会用到那些图标,如果设置Base窗体的图标是不是编译的时候会在每个继承窗体保存一份副本?这样不将会导致可执行文件变大吗?如果我把图标放在其它地方,然后在Base中用代码加载,这样是不是可以避免这种情况?

我的Connection放在DataModule中,我把DataModule放在自动创建列表中,即:
Application.Initialize;
Application.CreateForm(TfrmSysMain, frmSysMain);
Application.CreateForm(TSysDataModule, SysDataModule);
Application.Run;
执行程序时提示:
Class TAdoConnection not found.
已经在DataModule中引用了ADODB,Build也可以通过
 
1:
有多个窗体从一个窗体Base继承,每个窗体上都会用到那些图标,如果设置Base窗体的图标是不是编译的时候会在每个继承窗体保存一份副本?这样不将会导致可执行文件变大吗?如果我把图标放在其它地方,然后在Base中用代码加载,这样是不是可以避免这种情况?

我的Connection放在DataModule中,我把DataModule放在自动创建列表中,即:
Application.Initialize;
Application.CreateForm(TfrmSysMain, frmSysMain);
Application.CreateForm(TSysDataModule, SysDataModule);
Application.Run;
执行程序时提示:
Class TAdoConnection not found.
已经在DataModule中引用了ADODB,Build也可以通过
 
有些窗体你可以采用动态加载的方式打开。
 
你可以把公用的东西统统放到DataModule里面,这样是最节约程序的尺寸的,
DataModule不仅仅可以放数据控件,还可以放入其他的控件,
相信你是知道这点的!
 

Application.CreateForm(TfrmSysMain, frmSysMain);
Application.CreateForm(TSysDataModule, SysDataModule);
顺序调换一下试试

Application.CreateForm(TSysDataModule, SysDataModule);
Application.CreateForm(TfrmSysMain, frmSysMain);
 
1.是
2.调换顺序
Application.CreateForm(TSysDataModule, SysDataModule);
Application.CreateForm(TfrmSysMain, frmSysMain);
 
单步调试,Class TAdoConnection not found.这个错误应该是执行下面这句时发生吧。
Application.CreateForm(TfrmSysMain, frmSysMain);
 
各位,第二个问题已解决了
第一个问题我测试了一下,在DataModule上放图标和我在两个窗体上分别放两个图标列表并都加载图标最后生成的可执行竟然一样大,严重不解中...
 
那你就只有把图标放在程序外面,程序运行的时候动态的加载了
其实 在 DataModule上放图标 放图标列表,这个办法是可行的
估计你没有做好,在仔细说说的的做法
 
Form2继承自Form1
在DataModule1上放个图像列表il1
将Form1的工具栏Toolbar的Images指向DataModule1.il1 (Form2继承自Form1所以也自动设置了Form2的Toolbar的图标)
生成EXE, 5百多K

再测试第二种方法:
将il1放在Form1下,再编译, 一样大
 
wanghaiou,你的结果如何
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
D
回复
0
查看
664
DelphiTeacher的专栏
D
后退
顶部