在程式中我有四个窗体分别是:
frmBase所有窗体的基类 Type 为 T frmBase = class(TForm)
frmInfoBase资料维护基类 type 为 TfrmInfoBase = class(TfrmBase)
frmBaseInfoBase窗体 type 为 TfrmBaseInfoBase= class(TfrmInfoBase)
frmBaseSheetType实际操作窗体 type 为 TfrmBaseSheetType = class(TfrmBaseInfoBase)
后三个窗体中我都有设置工具条ToolBar,且命名相同,在frmInfoBase窗体中我对ToolBar中的每一个按钮都编写了代码,带上关键字inherited如下:
procedure TfrmInfoBase.acSaveExecute(Sender: TObject);
begin
inherited;
if QBaseInfo.State in [dsInsert,dsEdit] then
QBaseInfo.Post ;
end;
在frmBaseInfoBase和frmBaseSheetType中没有再对ToolBar中的按钮写程式,现在问题是:
一:当我运行frmBaseSheetType窗体时,提示为有相同的按钮名字,根据提示我将三个窗体中凡是有相同的Name的控件和ToolBar中相当按钮,分别更改为不同Name,
二:在frmBaseSheetType显示时,上面同时出现三个窗体中的工具条按钮,而只有第一个frmInfoBase工具条中的按钮可用,其下面两个frmBaseInfoBase和frmBaseSheetType工具条都呈灰色,
三:虽然第一个工具条可用,但只要一点击,便死机,
问题点:
一:从运行程式时的提示,显然它们是互相继承了,按道理在不同的窗体form中,可有相同的按钮和控件命名,而运行时却提示不能运行,一定要改成不同名字才能通过,
二:在程式运行中,显示时能显示三个工具条,这说明它已经断承了前两个的工具条
三:即然已断承,可点击运行按钮,却死机。
以上几点本人实在猜不透,是我程式写错,还是要在frmBaseInfoBase和frmBaseSheetType中加上别的代码,请高手指点,谢谢!
frmBase所有窗体的基类 Type 为 T frmBase = class(TForm)
frmInfoBase资料维护基类 type 为 TfrmInfoBase = class(TfrmBase)
frmBaseInfoBase窗体 type 为 TfrmBaseInfoBase= class(TfrmInfoBase)
frmBaseSheetType实际操作窗体 type 为 TfrmBaseSheetType = class(TfrmBaseInfoBase)
后三个窗体中我都有设置工具条ToolBar,且命名相同,在frmInfoBase窗体中我对ToolBar中的每一个按钮都编写了代码,带上关键字inherited如下:
procedure TfrmInfoBase.acSaveExecute(Sender: TObject);
begin
inherited;
if QBaseInfo.State in [dsInsert,dsEdit] then
QBaseInfo.Post ;
end;
在frmBaseInfoBase和frmBaseSheetType中没有再对ToolBar中的按钮写程式,现在问题是:
一:当我运行frmBaseSheetType窗体时,提示为有相同的按钮名字,根据提示我将三个窗体中凡是有相同的Name的控件和ToolBar中相当按钮,分别更改为不同Name,
二:在frmBaseSheetType显示时,上面同时出现三个窗体中的工具条按钮,而只有第一个frmInfoBase工具条中的按钮可用,其下面两个frmBaseInfoBase和frmBaseSheetType工具条都呈灰色,
三:虽然第一个工具条可用,但只要一点击,便死机,
问题点:
一:从运行程式时的提示,显然它们是互相继承了,按道理在不同的窗体form中,可有相同的按钮和控件命名,而运行时却提示不能运行,一定要改成不同名字才能通过,
二:在程式运行中,显示时能显示三个工具条,这说明它已经断承了前两个的工具条
三:即然已断承,可点击运行按钮,却死机。
以上几点本人实在猜不透,是我程式写错,还是要在frmBaseInfoBase和frmBaseSheetType中加上别的代码,请高手指点,谢谢!
继承下来的控件是不允许该名字的吧!
你是怎么继承窗体的!
=============================
撇开问题不谈:给你些建议。
delphi的窗体继承虽好,但不能滥用。
继承的层次不要太深,不然问题出会更多!
=============================
我现在的做法是:只做一个blankform,里面什么控件都没有,但在public中有些属性,方法什么的。
以供从它继承的窗体调用。
至于: lyre(大头鬼)说:每个窗体单独设计,这个方法虽然可行但却还是停留在面向过程编程的档次,我想借我手中一个案例来提高一下我对DELPHI的认识,况且DELPHI编程也接触将近一年了,遗憾的是还是有面向过程编程的思路,所以想借此论坛,恳请各位高手帮我充一下电,谢谢!