从这个问题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(组件?),以便它在设计视图中实际显示。
答案 0 :(得分:6)
在了解Delphi packages组件编写器的同时,您可以使用IDE专家创建一个新组件,在创建新的设计时包时自动将其添加到组件中:
首先使用Component / New组件中的IDE专家创建它:
出现提示时,选择“安装到新包”
提供包(文件)名称和描述
瞧!,你的调色板中有你的新组件:
试试这段代码:
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;
你会得到这个:
答案 1 :(得分:1)
是的,您需要注册它,以便它显示在设计视图中。
这可能是一个好主意,因为您可以随时继续更改组件行为。您需要更改组件样式,将来可能还需要其他东西。
所以,我会这样做。
编辑:
您可以通过创建一个APP来轻松更改您自己类型的所有TButtons
,该搜索将搜索DFM和PAS,查找TButtons等组件并将其更改为您自己的组件。或者您可以使用GExperts
替换组件功能。