He creado un componente y me gustaría poder ejecutar una operación sobre todos los ejemplares de la clase que haya creados. ¿Cómo puedo hacerlo?
Puedes seguir la pista de todos los ejemplares mediante una lista. El siguiente código muestra de forma esquemática de como hacerlo.
Código Delphi
[-]
type
TControlado = class( TComponent )
public
constructor Create( AOwner: TComponent ); override;
destructor Destroy; override;
end;
implementation
var
InstanceList: TList;
constructor TControlado.Create( AOwner: TComponent );
begin
inherited Create( AOwner );
InstanceList.Add( Self );
end;
destructor TControlado.Destroy;
var
Index: Integer;
begin
Index := InstanceList.IndexOf( Self );
InstanceList.Delete( Index );
inherited Destroy;
end;
procedure IterateOperation;
var
nInstance: Integer;
begin
for nInstance := 0 to Pred( InstanceList.Count ) do
with TControlado( InstanceList[ nInstance ] ) do
end;
initialization
InstanceList := TList.Create
finalization
InstanceList.Free
end.