Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизСобытия Найти похожие ветки
← →
WASYA (2003-07-16 17:18) [0]Как можна написать обработчик события для компоненты которая создаеться во время выполнения програмы методом .Create???
Делфи 6
← →
Юрий Федоров (2003-07-16 17:22) [1]Этот вопрос задается по несколько раз в день.
Можно.
Ищи здесь
← →
WASYA (2003-07-16 17:25) [2]Спасибо поищу :-)
← →
WASYA (2003-07-16 17:51) [3]не нашол :-(
← →
NickBat (2003-07-16 17:57) [4]Button.OnClick:=myClick;
где myClick - обработчик события написаный вами.
← →
WASYA (2003-07-16 18:08) [5]вот кусочек кода
procedure MySMTPSendStart;
begin
SMTP.FinalHeader.Insert(1,"X-Confirm-Reading-To: "+PFrom);
SMTP.FinalHeader.Insert(2,"Disposition-Notification-To: "+PFrom);
end;
...........
...........
SMTP:=TNMSMTP.Create(Application);
SMTP.OnSendStart:=MySMTPSendStart;
ругаеться
[Error] SendMail.dpr(74): Incompatible types: "method pointer and regular procedure"
поправте плз
← →
NickBat (2003-07-16 18:12) [6]procedure MySMTPSendStart;
а кто будет параметры для этой процедуры описывать?
Тебе же ошибка выскочила - там же все написано.
← →
WASYA (2003-07-16 18:17) [7]а какие параметры???
где их можна посмотреть???
MySMTPSendStart(Sender: TObject)-попробовал
[Error] SendMail.dpr(75): Undeclared identifier: "Sender"
[Error] SendMail.dpr(75): Statement expected, but expression of type "Class reference" found
[Error] SendMail.dpr(84): "." expected but "FOR" found
[Error] SendMail.dpr(102): Identifier redeclared: "Finalization"
[Warning] SendMail.dpr(104): Text after final "END." - ignored by compiler
:-(
← →
Юрий Федоров (2003-07-16 18:19) [8]MySMTPSendStart(Sender: TObject)
должна быть методом объекта
← →
WASYA (2003-07-16 18:23) [9]как методом???? ведь в самой компоненте єто событие????
извините за ............. :-(
← →
Юрий Федоров (2003-07-16 18:28) [10]На самом деле событие - то же самое свойство, только имеющее тип
procedure (sender: TObject) of object (в данном случае).
ТО есть :
procedure TForm1.MySMTPSendStart;
begin
SMTP.FinalHeader.Insert(1,"X-Confirm-Reading-To: "+PFrom);
SMTP.FinalHeader.Insert(2,"Disposition-Notification-To: "+PFrom);
end;
...........
...........
SMTP:=TNMSMTP.Create(Application);
SMTP.OnSendStart:=MySMTPSendStart;
Разумеется, не обязательно TForm1 - любой класс подойдет
← →
Юрий Федоров (2003-07-16 18:28) [11]Пардон,
procedure TForm1.MySMTPSendStart(Sender: TObject);
← →
WASYA (2003-07-16 18:33) [12]у Меня нет формы, приложение консольное, с формой для пробы Я уже всё сделал.
← →
Юрий Федоров (2003-07-16 18:35) [13]Придется заводить какой-нибудь класс, по другому не получится
← →
WASYA (2003-07-16 18:37) [14]Подскажите пожалуйста, как єго грамотней(правельней) завести??????
← →
Юрий Федоров (2003-07-16 18:42) [15]type
TSendStart = class
procedure MySMTPSendStart(Sender: TObject);
end;
...
procedure TSendStart.MySMTPSendStart(Sender: TObject);
begin
SMTP.FinalHeader.Insert(1,"X-Confirm-Reading-To: "+PFrom);
SMTP.FinalHeader.Insert(2,"Disposition-Notification-To: "+PFrom);
end;
var SendStart: TSendStart;
...........
SendStart:= TSendStart.Create;
SMTP:=TNMSMTP.Create(Application);
SMTP.OnSendStart:=SendStart.MySMTPSendStart;
Не забыть в конце вызвать
...
SendStart.Free;
ЗЫ. Совсем мне сегодня что-то делать нечего...
Вариант 2 - написать наследника от TNMSMTP, метод
MySMTPSendStart объявить в нем, создавать именно его
← →
WASYA (2003-07-16 18:46) [16]Спасибо попробую!!!!! :-)
ещё раз извините что отнимаю время и деньги
← →
WASYA (2003-07-16 18:53) [17]СПАСИБО!!!!!!!
Всё заработало, жаль что Мы не в одном городе, ПИВО поставил бы!!!
← →
Юрий Федоров (2003-07-16 18:59) [18]Пиво - это лишнее :-)
← →
horse (2003-07-16 19:09) [19]Юрий Федоров © (16.07.03 18:59)
Без предыдущего контекста не катит :)))
← →
Serginio (2003-07-16 19:27) [20]Что бы не мучится, лучше всего сделать наследника реализующий все события и в конструкторе переопеделить.
Например
TNewObjec=Class(TOldObject)
Procedure MySMTPSendStart;
Constructor Create; override;
end;
//----------------------
TNewObjec.MySMTPSendStart;
Begin
............
end;
TNewObjec.Create;
Begin
inherrited;
OnSendStart:=MySMTPSendStart;
end;
Вопервых не зависим не от кого, а во вторых Sender всегда будет равен Self.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c