有没有办法在Delphi中使用嵌套属性?目前我正在使用Delphi XE。
例如:
TCompoundAttribute = class (TCustomAttribute)
public
constructor Create (A1, A2 : TCustomAttribute)
end;
用法是
[ TCompoundAttribute (TSomeAttribute ('foo'), TOtherAttribute ('bar')) ]
目前这会导致内部错误。这将是在属性上创建一些布尔表达式的一个很好的功能。
答案 0 :(得分:0)
我认为你的意思是create method的默认属性。
这样的事情应该有效:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFoo = class
private
FA1: string;
FA2: string;
{ Private declarations }
public
procedure Show;
constructor Create (a1: string = 'foo'; a2: string = 'bar');
end;
var
o : Tfoo;
implementation
{$R *.dfm}
procedure Tfoo.show;
begin
ShowMessage(FA1 + ' ' + FA2);
end;
constructor Tfoo.create (a1: string = 'foo'; a2: string = 'bar');
begin
FA1 := a1;
FA2 := a2;
end;
begin
o := Tfoo.create;
o.show; //will show 'foo bar'
o.Free;
o := Tfoo.create('123');
o.show; //will show '123 bar'
o.Free;
o := Tfoo.create('123', '456');
o.show; //will show '123 456'
o.Free;
//etc..
end.