重载的问题(别以为简单),分少了没人问 + 分 我想不写控件,只在调用单元中,重载一个类(控件)的一处方法,如何处理。如我在MDI中放了一个TreeView控件,而TreeView.SaveToFile与LoadFromFile 无法满足我的要求,我可否直接在MDI单元中直接重载这两个方法,如果可以,如何做,望各大侠指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你是在MDI窗体级实现你需要的功能,这就不是重载了.而是基于MDI窗体类来实现一个方法了.与TreeView控件本身不存在什么关联了吧. 哦,我不明白一楼的观点,楼主不是说是TreeView控件的那两个方法满足不了你的需求吗,很简单啊,自己在单元里面定义个新类,如下:TMyTreeView=class(TTreeView) public procedure LoadFromFile(const FileName: string);reintroduce; procedure SaveToFile(const FileName: string);reintroduce;end;....procedure TMyTreeView.LoadFromFile(const FileName:String);begin //实现你的功能end;....procedure TMyTreeView.SaveToFile(const FileName:String);begin //实现你的功能end;....由于这里无法继承,所以可以将TCustomTreeView中的对应方法代码进行修改! procedure TMyTreeView.LoadFromFile(const FileName:String);begin Inherited; //两个方法这里都要加,虽然是重新引入,但加这个句子还是可以继续继承! //实现你的功能end; 或者直接覆盖Override也可以! 同意FrameSniper(§绕瀑游龙§) 和menliwxj(有缘) 学习reintroduce;是什么?今天才看到。 FrameSniper(§绕瀑游龙§) 的方法对阿 简单的换个方法名就OK了例如LoadFormDataFile等的 menliwxj(有缘) 的意思我想是说在窗体类中实现这两个方法,像这样:TMainForm = class(TForm) ... TreeView: TTreeView;public procedure SaveToFile; procedure LoadFromFile;end; 当然可以了,只是调用的方法不同而已。象你上面写的调用应该是MainForm.SaveTiFile和MainForm.LoadFromFile,其中MainForm是TMainForm的实例,如果在当前窗口中调用可以省略。如果重载TreeView的SaveToFile则要这样调用:TreeView.SaveToFile,TreeView是你自己编写的那个类的实例两种方法各有好处,对TreeView的重载可以一劳永逸,代码的封装和重用性都很好;你的方法容易实现,不用自己编写控件 怎么计算出两个日期段之间的所有日期,分不多,不好意思 关于DEV 安装过程中出现的错误! Delphi 如何开发一个可供JavaScript或VbScript调用的COM对象。 这种数组调用要如何处理? pascal速成学什么? 找几个函数或方法!!!----大家都来看看,总会有用到的时候 如何利用sql语句将access数据库中的某个字段的内容输出到一个文本文件当中? 100分求解!!!! 一个关于数据库导入的问题。 请教各位高手一个delphi打包的问题 如何判断.txt中的回车?谢谢! 怎样删除StringGrid当前显示的记录?
TMyTreeView=class(TTreeView)
public
procedure LoadFromFile(const FileName: string);reintroduce;
procedure SaveToFile(const FileName: string);reintroduce;
end;
....
procedure TMyTreeView.LoadFromFile(const FileName:String);
begin
//实现你的功能
end;
....
procedure TMyTreeView.SaveToFile(const FileName:String);
begin
//实现你的功能
end;
....由于这里无法继承,所以可以将TCustomTreeView中的对应方法代码进行修改!
begin
Inherited; //两个方法这里都要加,虽然是重新引入,但加这个句子还是可以继续继承!
//实现你的功能
end;
例如LoadFormDataFile等的
TMainForm = class(TForm)
...
TreeView: TTreeView;
public
procedure SaveToFile;
procedure LoadFromFile;
end;
MainForm.SaveTiFile和MainForm.LoadFromFile,其中MainForm是TMainForm的实例,如果在当前窗口中调用可以省略。
如果重载TreeView的SaveToFile则要这样调用:TreeView.SaveToFile,TreeView是你自己编写的那个类的实例两种方法各有好处,对TreeView的重载可以一劳永逸,代码的封装和重用性都很好;你的方法容易实现,不用自己编写控件