delphi开发过程中有多个不同功能的模块,但每个功能模块之间可以互相调用(我的这些话说的可能不清楚),举例来说,
有一个主窗体main ,上有A和B两个按钮,A打开frma,B打开frmb,frma和frmb功能上可能没什么联系,但在frma上有按钮可以直接打开frmb,frmb打开后有可以直接通过frmb上的按钮直接打开frma(关系有点绕),大家都是怎么处理这种关系的?
我delphi新丁是也,反正有点晕。我想这可能是oop的思想,我不知道该怎么做,大家帮帮忙,在此小弟先谢过各位了!
有一个主窗体main ,上有A和B两个按钮,A打开frma,B打开frmb,frma和frmb功能上可能没什么联系,但在frma上有按钮可以直接打开frmb,frmb打开后有可以直接通过frmb上的按钮直接打开frma(关系有点绕),大家都是怎么处理这种关系的?
我delphi新丁是也,反正有点晕。我想这可能是oop的思想,我不知道该怎么做,大家帮帮忙,在此小弟先谢过各位了!
解决方案 »
- 请问哪里有canvas对象的资料,不知哪位大侠有?
- 入题
- 使用API函数进行文件夹的拷贝,可是报错,但是重新执行一次或几次,就可以了,为什么?
- 如何判断文件夹里的文件夹是否为最后一个文件夹
- ADOTable在放置在Remote data modules中居然不能用?????
- 窗体最顶端
- linzhisong来拿分。
- 有关数据库中数据转化的问题!请大家帮忙!!
- 如何编程实现ping的功能?请帮忙!
- 如何在DELPHI中编程实现得知ORACLE数据库服务器是否正常?
- 如何把REAL类型的值转化成字符串?
- 最白吃的问题!!!在线等!!急!!@ var Form1: TForm1;这个定义去掉有事吗???
在Main上引用frma的Unit和frmb的Unit,然后调用frma.show和frmb.show;
在frma上引用frmb的Unit,然后调用frmb.show;
在frmb上引用frma的Unit,然后调用frma.show;==================================================================
不过要在程序的实现部分引用对方的模块,否则程序会报错(循环调用!)
A继承b就可以了
Buttonb: TButton;
Buttona: TButtonb;
在frma的implementation
uses frmb;在frmb的implementation
uses frma;
main上打开frma,再frma打开frmb时,frma必须要隐藏起来不显示(这是一个条件),所以在frma中写上:frmb.show; frma.hide; 在frmb上打开其frmx他操作时可能都要怎么写,这是其一。
其二,从frma打开frmb后,如果这时frmb关闭,“frmb.close”,再关闭main 看样子程序是关闭了,其实,在任务管理器中还有frma的进程存在。所以我在frmb的关闭按钮中这样写“frmb.close;frma.close”;运行一遍,ok,程序没问题了,很正常。but,问题也来了,
因为我有很多的form,frmb可以打开frmc,frmc打开frmd.......等等等等,而且我还要再最后一个frmx中的关闭按钮中写上“close;frmx-1.close......frmb.close;frma.close;”很烦吧?更糟的是frmc还可能随意的调用frma,frmd,frmx,到时后根本不知道要关闭谁了,即使可以用条件来判断该关闭谁,但也太繁了一点,所以这样做程序绝对不行。这样的程序不是一个树型结构,而是一个网型的结构。
这就是我的问题,大家仔细试试就知道了,我不知道这回我说清楚了没有。
这个东东烦了我很久了,我有想过用form.Destroy 但使用的时候还是困难重重。
对于继承的使用,我还不会,我不知道是不是可行,还请menggirl多多指教。
要关闭时,用一个循环,全部free。
如: frmAbc1: TfrmAbc;
创建时这样做: frmAbc1 := TfrmAbc.Create(Application);
这样,当应用程序结束时,自动会释放frmAbc1
在你新建立窗体的时候,可看到你的工程名字那一栏,选择你要继承的窗体来新创建FORM,你自己仔细看看,知道你是新人,我说的你可能不太懂
uses frmb;在frmb的implementation
uses frma;