Первое, что нужно проверить, это то, что вы пытаетесь присвоить свойству события метод . Это должна быть процедура или функция, принадлежащая классу; это не может быть отдельной подпрограммой.
Далее, обратите внимание, что простого подтверждения того, что имена типов совпадают, недостаточно. Delphi позволяет переопределять идентификатор, поэтому имя типа, которое вы видите в одном блоке, не обязательно относится к одной и той же вещи, когда вы видите тот же идентификатор в другом блоке. Значение может даже измениться в середине единицы. Например:
unit Example;
interface
uses Windows;
var
foo: TBitmap;
implementation
uses Graphics;
var
bar: TBitmap;
end.
Переменная foo
имеет тип Windows.TBitmap
, тип записи, тогда как bar
имеет тип Graphics.TBitmap
, тип класса.
Вы можете позволить IDE помочь вам диагностировать это: Ctrl + клик по именам идентификаторов и позволит IDE перенести вас в их объявления. Они возят тебя в одни и те же места? Если нет, то вы можете квалифицировать имена типов с именами устройств. Например, мы можем изменить приведенное выше объявление bar
на следующее:
var
bar: Windows.TBitmap;
Теперь он будет иметь тот же тип, что и foo
. Проверьте то же самое в объявлении обработчика событий.