![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Событие
Term © (2006-11-07 16:24:00)пытаюсь создать событие
TOnSaveToFile=procedure(Sender:TObject;var FileName:string) of object;далее в процедуре
TRtfReport=class(TAbstractReport)
private
fOnSaveToFile:TOnSaveToFile;
..................
public
property OnSaveToFile:TOnSaveToFile read fOnSaveToFile write fOnSaveToFile;
procedure Print(const PrinterName:string=''); override;
...
end;
procedure Print(const PrinterName:string='');есть вызов
if Assigned(fOnSaveToFile) then fOnSaveToFile(Self,FileName);
добавляю процедуру
procedure OnSavToFile(Sender:TObject;var FileName:string);
потом когда пытаюсь присвоить событию обработчик
TRtfReport(rpt).OnSaveToFile:=OnSavToFile;
получаю матюки при попытке компиляции
[Pascal Error] prn_func.pas(105): E2009 Incompatible types: 'method pointer and regular procedure'
Плохиш (2006-11-07 17:26:00) [1]
> Term © (07.11.06 17:18) [4]
> тогда наверное надо объявить так
Вообще-то тебе, как создателю программы, должно быть виднее.
Term (2006-11-07 17:18:00) [2]тогда наверное надо объявить так
TOnSaveToFile=procedure(var FileName:string);
MetalFan (2006-11-07 17:04:00) [3]
> TOnSaveToFile=procedure(Sender:TObject;var FileName:string)
> of object;
напиши как
TOnSaveToFile=procedure(Sender:TObject;var FileName:string);
))
Плохиш (2006-11-07 16:27:00) [4]
> добавляю процедуру
> procedure OnSavToFile(Sender:TObject;var FileName:string);
Куда добавляешь? Она должна быть методом класса.
Сергей М. (2006-11-07 16:27:00) [5]Попытайся понять, что значит эта 'матюкальная' фраза