31 de jan. de 2005

Como ter somente um determinado componente por form?

Do fórum ClubeDelphi:

Como faço para que só possa existir um componente de determinado tipo em cada form?

Imaginando que esteja desenvolvendo um componente, pode-se testar no construtor do componente se o Owner do componente já possui uma instância do componente.

1 constructor TMeuComponente.Create(AOwner: TComponent); 2 var 3 I: Integer; 4 ... 5 begin 6 if AOwner <> nil and then begin 7 8 for I := 0 to AOwner.ComponentCount - 1 do begin 9 10 if AOwner.Components[I] is TMeuComponente then begin 11 12 raise Exception.Create('Só pode ter um TMeuComponente no form'); 13 end; 14 end; 15 end 16 else begin 17 18 raise Exception.Create('Precisa ter um Owner'); 19 end; 20 21 inherited Create(AOwner); 22 23 // resto da sua inicialização 24 ... 25 end;

Esse exemplo assume que não é permitido criar o componente sem ter um Owner válido.

Nenhum comentário: