Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > [На заметку] Компонент в DLL и XE2 (FastMM4)


Автор: dvamaster 2.11.2011, 19:16
Случилась проблема при создании компонеты (например, TButton) точнее присвоение полю Parent.
Как ни странно но ругань идет на TFont

Используется Delphi XE2, FastMM4 (может и ни причем эта библиотека).

DLL с ошибкой:
Код

procedure Init(AParent: TWinControl);
begin
  if Button <> nil then
    Exit;
  Button := TButton.Create(AParent);
  Button.Parent := AParent; // <-- тут вызывается исключение
  Button.Caption := 'Test';
  Button.Left := 8;
  Button.Top := 8
end;


оказывается если использовать шрифт родителя, то выскочит исключение.
значит нужно использовать шрифт самого компонета.

Код

procedure Init(AParent: TWinControl);
begin
  if Button <> nil then
    Exit;
  Button := TButton.Create(AParent);
  Button.ParentFont := false; // <-- нужно добавить
  Button.Parent := AParent;
  Button.Caption := 'Test';
  Button.Left := 8;
  Button.Top := 8
end;


теперь все прекрасно  smile 

Автор: bems 9.11.2011, 10:10
Это может приключиться на любом свойстве или методе, не только шрифте. Никогда не передавайте объекты в/из длл. Передавайте например интерфейсы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)