Это довольно просто, вы не используете TNotifyEvent
, а пользовательский тип события с дополнительными параметрами для информации, которую вы хотите вернуть.
Простой пример получения имени файла и другого параметра (например, имени файла ZIP и уровня его сжатия:
type
TReturnSaveZipFileDataEvent = procedure(Sender: TObject;
const AFileName: string; ACompressionLevel: Cardinal) of object;
Теперь вместо объявления последнего параметра вашего Execute()
метода типа TNotifyEvent
вы объявляете его специальным типом события.
Обратите внимание, что IMHO гораздо лучший способ реализовать такую функциональность - использовать интерфейсы. Пользовательский интерфейс передается в диалог, который может использовать его, чтобы сделать больше, чем просто перезвонить с результатами. Например, интерфейс может иметь другой метод для проверки правильности введенных данных, который диалоговое окно будет вызывать в обработчике OnCloseQuery
.