Событие динамически созданному компоненту [РЕШЕНО]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
AlexNightingaller
новенький
Сообщения: 19
Зарегистрирован: 08.06.2011 10:41:16

Событие динамически созданному компоненту [РЕШЕНО]

Сообщение AlexNightingaller »

Есть динамически созданная форма, ей присваевается событие OnResize:

Код: Выделить всё

formar[fc].OnResize:=Form1.DesTimeResize(sender); 

Выдает ошибку:
menu.pas(296,24) Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"
Если пишу так:

Код: Выделить всё

formar[fc].OnResize:=Form1.DesTimeResize; 

То ошбка такая: menu.pas(296,43) Error: Wrong number of parameters specified for call to "DesTimeResize"
Процедура объявлена так:
procedure DesTimeResize(Sender: TObject);
Объявлена в разделе Public класса формы.
В чем дело?
Под windows
Последний раз редактировалось AlexNightingaller 09.07.2011 14:30:55, всего редактировалось 1 раз.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Код: Выделить всё

formar[fc].OnResize:=@Form1.DesTimeResize;
AlexNightingaller
новенький
Сообщения: 19
Зарегистрирован: 08.06.2011 10:41:16

Сообщение AlexNightingaller »

Спасибо огромное!
Pavidlo
новенький
Сообщения: 41
Зарегистрирован: 16.02.2011 15:04:49

Сообщение Pavidlo »

Mr.Smart , а вы не могли бы объяснить чем первый вариант написания, отличается от 2.. Визуально то вижу, но не совсем понимаю...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Pavidlo
В Pascal операция @ - взятие адреса. В свойстве OnResize содержится адрес метода. Логично?

Это справедливо для стандарта Pascal, но хитрые Borland решили, что эта операция лишняя для функций, процедур и т.д. ("А чо и так всё понятно") и можно её не указывать. А вот более хитрые разработчики FPC решили всё таки придерживаться стандарту. Вот такой вот сырбор получился.

Есть одно НО. Если хочется писать как в Delphi аж чешется, можно воспользоваться хитрой директивой {$mode delphi} она как раз и подскажет FPC, что быдлокод в стиле дельфей и всё поглотится.
Pavidlo
новенький
Сообщения: 41
Зарегистрирован: 16.02.2011 15:04:49

Сообщение Pavidlo »

Спасибо большое)
Ответить