某父类的一个过程没有virtual标志,而我想在它的派生类在使用重载增加该过程的功能,如何做呢? 比如说,我给tpicture类建一个自定义的子类,现在需要给子类的LoadFromFile过程增加一事件,可是父类的tpicture.loadfromfile不支持重载,我该如何做才能在子类的loadfromfile过程中即实现了加载了图片又增加了我需要的功能呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 恐怕不行,重载必须是申明为VIRTUAL的虚函数。 type TMyPicture = class(TPicture) public procedure LoadFromFile(const Filename: string); overload; end;implementation{ TMyPicture }procedure TMyPicture.LoadFromFile(const Filename: string);var a: string;begin inherited LoadFromFile(Filename); a := Filename + '^OK'; // 添加自定义事件end;// 当创建TMyPicture对象以后,调用的方法就是TMyPicture.LoadFromFile对象方法。// 另:去掉TMyPicture定义部分LoadFromFile方法后面的overload 在D7 中也是编译通过的。 procedure LoadFromFile(const Filename: string); overload;这个overload可以在这里引用吗?我查了一下 picture.loadfromfile 事件不是虚拟的,如何在子类中实现重载呢? override 不是重载吗?仁兄能不能详细谈一下这里面的这个override的含义呢? 报歉,是我看错了。不过这个overload可以在这种情况下使用呢?毕竟它的父类没有声明为虚拟或动态。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } protected procedure UpdateWindowState; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin UpdateWindowState;end;procedure TForm1.UpdateWindowState;begin inherited; ShowMessage('ok');end;end.请看:TCustomForm.UpdateActions;只需要在你的UpdateActions中inherited就OK! 请问个变量赋值问题? char不是16位吗?但下面这个语句为何是1 大家帮个忙,提示FROM字句语法错误! DELPHI5编译的程序不能脱离DELPHI环境是怎么回事? delphi里面怎样把一个字符串如“ABC",也许比较长,快速地变成CBA,也就是倒过来 高分求DevExpress.ExpressPrinting.System for D6版 不是分少是问题简单! 自动点击程序 怎样编写象WINZIP那样在右键菜单中增加图标和选项? 小菜一碟!如果你是高手! 年终放分了,散进所有分. 类似VISIO的流程图绘制软件,可以自定义图形,DELPHI源代码,整体出售
public
procedure LoadFromFile(const Filename: string); overload;
end;implementation{ TMyPicture }procedure TMyPicture.LoadFromFile(const Filename: string);
var
a: string;
begin
inherited LoadFromFile(Filename);
a := Filename + '^OK';
// 添加自定义事件
end;// 当创建TMyPicture对象以后,调用的方法就是TMyPicture.LoadFromFile对象方法。
// 另:去掉TMyPicture定义部分LoadFromFile方法后面的overload 在D7 中也是编译通过的。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
protected
procedure UpdateWindowState;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
UpdateWindowState;
end;procedure TForm1.UpdateWindowState;
begin
inherited; ShowMessage('ok');
end;end.
请看:TCustomForm.UpdateActions;只需要在你的UpdateActions中inherited就OK!