Укладка компонентов за счет расширения их класса - PullRequest
2 голосов
/ 26 марта 2011

Из этого вопроса Передача объекта в ссылке / одно место для объектов стиля

Я просто думал, что если я создам класс-потомок для элемента, который я стилизую.

например (извините за плохой код, не в ide, но вы должны понять, что я имею в виду)

TStyledButton = class(TButton)
  public 
     constructor Create; //This overrides the main TButton
end;

constructor TStyledButton.Create;
begin
   inherited;
   self.Color := clRed;
end;

Тогда в моей форме вместо этого у меня просто Button1 как TStyledButton.

Это удалит весь дополнительный код в форме, создаваемой для обработки настроек стилей / вызова функции для установки стилей.

Единственная проблема заключается в том, как это будет происходить в представлении конструктора, придется ли мне регистрировать этот объект (компонент?), Чтобы он действительно отображался как обычно в представлении конструктора.

Ответы [ 2 ]

6 голосов
/ 26 марта 2011

Пока вы узнаете о пакетах Delphi компонентах записи, вы можете использовать эксперт IDE для создания нового компонента, автоматически добавлять его в палитру компонентов при создании нового пакета времени разработки:

Начните с создания его с помощью эксперта IDE в компоненте / новый компонент:

New component

New component

При появлении запроса выберите Установить в новый пакет

New package

Укажите название пакета (файла) и описание

Package name

и вуаля !, у вас есть новый компонент в вашей палитре:

Component installed

Попробуйте этот код:

  TMyButton = class(TButton)
  public
    constructor Create(AOwner: TComponent); override;
  end;

procedure Register;

implementation
uses Graphics;

{ TMyButton }

constructor TMyButton.Create(AOwner: TComponent);
begin
  inherited;
  Font.Style := [fsBold];
  Caption := 'Click me!';
end;

Вы получите это:

My Button!

1 голос
/ 26 марта 2011

Да, вам нужно зарегистрировать его, чтобы он отображался в режиме конструктора.

Это может быть хорошей идеей, поскольку вы всегда можете продолжать изменять поведение компонента.Вам нужно было изменить стиль компонента, и в будущем вам может понадобиться другая вещь.

Итак, я бы сделал это.

РЕДАКТИРОВАТЬ:

Вы можете легко изменить все TButtons для своего собственного типа, создав приложение, которое будет искать DFM и PASищите такие компоненты, как TButtons и меняйте их на свои.Или вы можете использовать GExperts функцию замены компонентов.

...