通过扩展类来设置组件样式

时间:2011-03-25 22:00:28

标签: delphi object styling

从这个问题Passing object in reference / one place to style objects

我只是想,如果我为我正在造型的项目创建了一个后代类。

例如(原谅可怜的代码,不是ide,但你应该明白我的意思)

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

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

然后在我的表单中,我只将Button1作为TStyledButton。

这将删除表单创建中的所有额外代码,以处理设置样式/调用函数以设置样式。

唯一的问题是,如何在设计视图中显示,我是否必须注册此Object(组件?),以便它在设计视图中实际显示。

2 个答案:

答案 0 :(得分:6)

在了解Delphi packages组件编写器的同时,您可以使用IDE专家创建一个新组件,在创建新的设计时包时自动将其添加到组件中:

首先使用Component / New组件中的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 :(得分:1)

是的,您需要注册它,以便它显示在设计视图中。

这可能是一个好主意,因为您可以随时继续更改组件行为。您需要更改组件样式,将来可能还需要其他东西。

所以,我会这样做。

编辑:

您可以通过创建一个APP来轻松更改您自己类型的所有TButtons,该搜索将搜索DFM和PAS,查找TButtons等组件并将其更改为您自己的组件。或者您可以使用GExperts替换组件功能。