powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как связать процедуру и событие?
3 сообщений из 3, страница 1 из 1
Как связать процедуру и событие?
    #32248426
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу модуль, где в рантайме создается объект TTimer. Как присвоить новоиспеченному объекту обработчик OnTimer. Других таймеров, созданных в дизайнтайме нет и поэтому присвоить что-то подобное
MyTimer.OnTimer:=Timer1.OnTimer
нельзя.

Как быть? Хотелось бы использовать в качестве обработчика процедуру, желательно с параметром Sender. Пробовал что-то подобное следующему:

procedure MyTimerAlarm(Sender: TObject);
begin
...
end;

...

t:=TTimer.Create(Application);
t.OnTimer:=MyTimerAlarm;

но компилятор ругается, что типы procedure и event не совместимы.
Подскажите, как делать. Желательно примером.
...
Рейтинг: 0 / 0
Как связать процедуру и событие?
    #32248454
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, extctrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure MyOnTimer(Sender: TObject);
  public
    { Public declarations }
  end;



var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MyOnTimer(Sender: TObject);
begin
  (Sender as TTimer).Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Timer: TTimer;
begin
  Timer := TTimer.Create(Self);
  Timer.OnTimer := MyOnTimer;
  ... 
end;

end.
...
Рейтинг: 0 / 0
Как связать процедуру и событие?
    #32248652
Андрей Бабенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если процедура не метод класса, то типа так:
Создаешь процедуру с двумя параметрами MyProc(ASelf, Sender: TObject);

А дальше напр. так
var
amethod: TMethod;
begin
amethod.Code := @MyProc;
amethod.Data := Self;
Timer.OnTimer := TNotifyEvent(amethod);
.....
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как связать процедуру и событие?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]