А вот такой класс не подойдет?
Код:
interface
type
TOnOpen = procedure (FileName: String) of object;
TMyTextFile = class
FFileName: String;
FOnOpen: TOnOpen;
FMemo: Pointer;
constructor Create(FileName: String; Memo: Pointer);
destructor Destroy; override;
public
property Memo: Pointer read FMemo write FMemo; //Свойство - указатель на TMemo
property OnOpen: TOnOpen read FOnOpen write FOnOpen; //Событие происходящее при открытии файла
property FileName: String read FFileName write FFileName; //Свойство, в котором хранится имя открываемого файла
procedure OpenFile;
end;
implementation
{ TMyTextFile }
constructor TMyTextFile.Create(FileName: String; Memo: Pointer); //Создаем объект, FileName - имя файла, Memo - указатель на объект TMemo, например @Memo1
begin
inherited Create;
FFileName:=FileName;
FMemo:=Memo;
end;
destructor TMyTextFile.Destroy; //Уничтожаем объект
begin
inherited;
end;
procedure TMyTextFile.OpenFile; //Загружает файл FFileName в FMemo^
begin
TMemo(Memo^).Lines.LoadFromFile(FFileName);
FOnOpen(FFileName);
end;
Чтобы загрузить, например в Memo1 файл C:\T.txt надо:
Код:
var
MyTextFile: TMyTextFile; //Объявить переменную
...
begin
MyTextFile:=TMyTextFile.Create('C:\T.txt', @Memo1); //Создать объект, в данном случае в Memo1 будет загружет файл C:\T.txt
MyTextFile.OpenFile; //Загрузить содержимое файла в Memo
MyTextFile.Destroy; //Уничтожить объект
end;
Событие OnOpen будет происходить каждый раз, когда запускается процедура OpenFile