本人在练习写VCL时遇到困难,请各位帮一下忙!(50分)

  • 主题发起人 主题发起人 Cando
  • 开始时间 开始时间
C

Cando

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了如下VCL代码,想用LoadFromFile的,可是ADVMemo.LoadFromFile看不到.程序如下:
unit AdvMemo;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TAdvMemo = class(TMemo)
private
{ Private declarations }
Procedure LoadFromFile(const AFileName:String);
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

Procedure TAdvMemo.LoadFromFile(const AFileName:String);
var
f:TextFile;
str:String;
begin
AssignFile(f,AFileName);
Reset(f);
try
while not Eof(f) do
begin
Readln(f,str);
Lines.Add(str);
end;
finally
CloseFile(f);
end;
end;

procedure Register;
begin
RegisterComponents('DDG', [TAdvMemo]);
end;

end.
[?]
 
LoadFromFile是一个私有过程,当然无法直接调用(当然还是其它办法的[:D])
代码:
...
  private
    { Private declarations }
    Procedure LoadFromFile(const AFileName:String);
...
把它的放在Public段中试试:
代码:
...
  public
    { Private declarations }
    Procedure LoadFromFile(const AFileName:String);
...
 
To 杜宝:
>>LoadFromFile是一个私有过程
TMemo根本没有LoadFromFile方法,而LoadFromFile是其属性Lines的方法。

To Cando:
LoadFromFile是通过LoadFromStream实现的,你应该把你写的方法公开出来(你的
代码把它置于私有段)。另外你的实现代码效率也相对较低。且看。

procedure TAdvMemo.LoadFromFile(const FileName: String);
begin
Lines.LoadFromFile(FileName);
end;
 
agree with JohnsonGuo,
 
同意楼上的楼上
 
同意楼上的楼上
 
多人接受答案了。
 
后退
顶部