做一个进销存的数据库,发现这个工程会有很多窗体.而且类似的窗体都会非常多.
如果使用继承的话,会就产生大量的窗体类.可能80个.如果做大型工程,几百个窗体类都有可能出现.非常的可怕...
于是,我想出了一种笨办法,把数据控件都放在一个个TPanel中,这些Panel放在一个临时窗体A里,然后新建并打开另一个要显示的窗体(叫模板窗体),再把TPanel.Panel设为模板窗体,这样来贴成新窗体来动态显示.
这样,大量相似的窗体,我不用派生,只要一个窗体+临时窗体A+Tpanels就搞定了.
但是问题又来了:
1.工程越来越大时,这些TPanel越来越多,反而越来越不好维护.
2.而且使用这种方式要比派生窗体多写额外的代码.
3.如果要在这些Tpanel中写一点代码,会相当麻烦,倒不如直接使用派生窗体的方式.
4.临时窗体A的东西越来越多时,会而很占内存空间,而继承的话可以动态建立,没有这个缺点.
后悔呀,发现这种笨办法除了减少窗体类的个数外,一点好处也没有,相反还添加了不少的麻烦.但如果用派生窗体做,几百个窗体类也不奇怪了..
各位大虾,遇到这个情况,你们是如何去做呢?
如果使用继承的话,会就产生大量的窗体类.可能80个.如果做大型工程,几百个窗体类都有可能出现.非常的可怕...
于是,我想出了一种笨办法,把数据控件都放在一个个TPanel中,这些Panel放在一个临时窗体A里,然后新建并打开另一个要显示的窗体(叫模板窗体),再把TPanel.Panel设为模板窗体,这样来贴成新窗体来动态显示.
这样,大量相似的窗体,我不用派生,只要一个窗体+临时窗体A+Tpanels就搞定了.
但是问题又来了:
1.工程越来越大时,这些TPanel越来越多,反而越来越不好维护.
2.而且使用这种方式要比派生窗体多写额外的代码.
3.如果要在这些Tpanel中写一点代码,会相当麻烦,倒不如直接使用派生窗体的方式.
4.临时窗体A的东西越来越多时,会而很占内存空间,而继承的话可以动态建立,没有这个缺点.
后悔呀,发现这种笨办法除了减少窗体类的个数外,一点好处也没有,相反还添加了不少的麻烦.但如果用派生窗体做,几百个窗体类也不奇怪了..
各位大虾,遇到这个情况,你们是如何去做呢?
解决方案 »
- 刚学Delphi的几个基本问题,希望大家帮忙解决!
- 急救!Delphi开发组件编译错误
- RichEdit.LoadFromFile打开的文件显示乱码问题。
- 如何对记录结构数组统一赋初值?
- 怎么用Createfile()?
- 讨论:刚才看到“3721与Opera合作推出Opera 6.04中文版”,大家对3721如何看待?
- 关于FastRept的打印问题?
- 关于VC++,VB,Delphi的讨论.
- 试用DELPHI6,BUG太多了!
- 高手请进,Ado问题,急急急!
- 报表:QuickRep如何实现象Excel那样可以选择性的选择某些列来打印?
- c/s两层架构,是不是必须把程序目录和SQL Server数据库所在的目录都共享,局域网中的用户才能同时访问操作?
用窗体继承,然后分模块,使用Dll,这样每个Dll里面的窗体就很少了,一般每个模块的窗体不会超出2、30个。
如果使用DLL的话,显示有模式窗体是一件多痛苦的事,要传递application句柄.真不爽.
其实我的想法并不是认为工程运行时太占内存和EXE文件生成太大,而是最好能使这些窗体按功能来分组.这样在查找时就比较好找一点.