Автор: Mike Scott
TPoint не имеет информацию о типе, следовательно, вы не можете
зарегистрировать для него редактор свойства. Вы можете иметь редактор свойств
только для строк, реальных, порядковых чисел или указателей на объекты. Дело в
том, что редактор свойств имеет только следующие методы, чтобы иметь доступ к
свойствам через RTTI:
GetValue/SetValue для строк (strings)
GetFloatValue/SetFloatValue для натуральных чисел (floats)
GetOrdValue/SetOrdValue для порядковых (и указателей) Решением может
быть создание класса TPersistentPoint, являющегося наследником TPersistent и
имеющего те же свойства, что и TPoint. Вы можете просто "обернуть" TPoint для
хранения значений, или создать явные поля. Непосредственное использование TPoint
сделает использование метода Assign легким и быстрым для кодирования. Для
процедур чтения и записи вы можете использовать поля записи, как показано ниже:
type
TPersistentPoint = class( TPersistent )
private
FPoint: TPoint ;
published
property X : integer read FPoint.X write FPoint.X ;
property Y : integer read FPoint.Y write FPoint.Y ;
end ;
|
|