Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

События   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
4-101013
dorohov
2003-05-26 15:42
2003.07.31
Нажатие клавиш


14-100914
Chieftain
2003-07-14 13:13
2003.07.31
Синтаксический анализатор, парсинг текста


1-100738
Aleksei
2003-07-15 18:13
2003.07.31
Delphi & Excel


11-100656
Arch-vile
2002-11-24 22:29
2003.07.31
randomfrom


1-100825
афвуд
2003-07-16 18:51
2003.07.31
Хочу чтобы TImage был выше всех на форме.