Опубликованные свойства пользовательского фрейма исчезают при повторном открытии файла формы
Я использую TFrame
в качестве базового класса для составного компонента, который зарегистрирован в IDE. Когда я выбираю компонент из палитры и добавляю его в форму / фрейм, кажется, что все работает хорошо. В следующий раз, когда я открою форму / фрейм, компонент фрейма появится как общий фрейм, например, если компонент не зарегистрирован в IDE, я имею в виду, что:
- Все пользовательские опубликованные свойства больше не видны в
Object Inspector
, - Только опубликованные свойства, унаследованные от
TFrame
все еще видны вObject Inspector
, - Субкомпоненты могут быть нажаты и перемещены внутри фрейма.
Кроме того, если свойство имело значение, я получаю следующую ошибку:
Ошибка чтения MyComponent1.MyProperty: свойство MyProperty не существует. Игнорировать ошибку и продолжить? ПРИМЕЧАНИЕ. Игнорирование ошибки может привести к удалению компонентов или потере значений свойств.
Пошаговый пример:
- Я создал и скомпилировал пакет "Designtime and Runtime". (Обратите внимание, что, используя Delphi 2007, я получил класс TFrameModule, как описано в посте этого Ондрея Келле).
Код:
TMyComponent = class(TFrame)
private
FMyCaption : TCaption;
{ Private declarations }
public
{ Public declarations }
published
property MyCaption : TCaption read FMyCaption write FMyCaption;
end;
....
procedure Register;
var
delphivclide: THandle;
TFrameModule: TCustomModuleClass;
begin
RegisterComponents('MyComponents', [TMyComponent]);
//registering custom module for TMyComponent
delphivclide := GetModuleHandle('delphivclide100.bpl');
if delphivclide <> 0 then
begin
TFrameModule := GetProcAddress(delphivclide, '@Vclformcontainer@TFrameModule@');
if Assigned(TFrameModule) then
RegisterCustomModule(TMyComponent, TFrameModule);
end;
end;
Я добавил папку, которая содержит
dcu
а такжеdcp
файлы вTools -> Options -> Library - Win32 -> Library path
Я добавил папку, которая содержит
bpl
подать вPATH
переменная окружения.Я установил пакет в IDE и перезапустил его.
Я создал новый пакет "Runtime" с формой, в которую я поместил компонент
TMyComponent
учебный класс.Компонент появился, как и ожидалось, и я установил
MyCaption
собственность на "ААА".Затем я сохранил форму и закрыл IDE.
После этого я перезапустил IDE, при повторном открытии того же файла формы я получаю следующую ошибку:
Я также попытался выполнить те же шаги, не устанавливая никакого значения для свойства, и я заметил, что свойство исчезает из
Object Inspector
:
Дополнительная информация:
MyCaption
свойство появляется вObject Inspector
каждый раз, когда пакет компонента перекомпилируется иIDE
перезапущен Я могу видеть это вObject Inspector
до следующего раза, я закрываю и перезапускаюIDE
затем снова исчезает.Я воспроизвел ту же проблему, используя DelphiXE7, передавая delphivclide210.bpl вместо delphivclide100.bpl в
GetModuleHandle
функция вRegister
процедура.Кажется, это не связано с ОС, я воспроизвел его на Windows 10 и Windows XP.