Este ejmplo sirve para hacer una componente con una propiedad que sea una lista desplegable como por ejemplo la propiedad DatBaseNames o la propiedad TableName del TTable
Código Delphi
[-]
unit ComponenteConLista;
uses
....., DsgnIntf, ......;
TPropiedadLista = class (TStringProperty)
public
function GetAttributes : TPropertyAttributes; override;
procedure GetValues(Proc : TGetStrProc); override;
end;
TComponenteConLista = class(TComponent)
private
FLista: string;
protected
public
constructor Create(AOwner : TComponent); override;
published
property Lista: string read FLista write FLista;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('ClubDelphi', [TComponenteConLista]);
RegisterPropertyEditor(TypeInfo(String),TComponenteConLista,'Lista',TPropiedadLista);
end;
constructor TComponenteConLista.Create(AOwner: TComponent);
begin
inherited;
end;
function TPropiedadLista.GetAttributes: TPropertyAttributes;
begin
Result:=[paValueList, paSortList];
end;
procedure TPropiedadLista.GetValues(Proc: TGetStrProc);
var
ListaDeCosas : TStrings;
i : integer;
begin
ListaDeCosas := TStringList.Create;
try
ListaDeCosas.Add('UnaCosa');
ListaDeCosas.Add('OtraCosa');
ListaDeCosas.Add('OtraMas');
for i:=0 to ListaDeCosas.Count - 1 do Proc(ListadeCosas[i]);
finally
ListaDeCosas.Free;
end;
end;
end.