Опубликованные свойства пользовательского фрейма исчезают при повторном открытии файла формы

Я использую 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.

0 ответов

Другие вопросы по тегам