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 ; |
- Mike Scott [001042]