On 9/27/07, Joao Morais <[EMAIL PROTECTED]> wrote:
>  Mais ou menos isto:
>
>  procedure ProcuraUmForm(AFormClass: TFormClass);
>  begin
>     for I := 0 to Components.Count - 1 do
>       if Components[I] is AFormClass then
>         // I aponta para um form da mesma classe ou um decendente
>
>  if Components[I].ClassType = AFormClass then
>         // I aponta para a mesma classe
>
>  Se ficar na dúvida, a segunda abordagem deve cobrir melhor o que você
>  pretende fazer.
>
>  --
>  Joao Morais
>
>  > Valeu.

Ainda não é isso.
O que eu gostaria de fazer é o seguinte:
Passar uma variável. Se já existir um formulário daquele tipo a minha
variável receberia o endereço daquele form. Senão a variável receberia
um novo form criado na hora.
Se eu passasse a variável e o tipo da classe seria simples de
implementar isso, mas sempre existe o risco de passar uma variável com
o tipo errado. E é isso que eu gostaria de evitar.

Seria algo do tipo:
procedure ProcuraUmForm(AForm: TForm);
begin
  for I := 0 to Screen.FormCount do
    if Screen.Forms[I].ClassType = ClasseDoFormulario(Form) then
      AForm := Screen.Forms[I];


  if AForm = nil then
    AForm := ClasseDoFormulario(Form).Create(Self);
end;

Valeu


-- 
Leodinei Bielak
http://leodinei.blogspot.com/

"In theory, there is no difference between theory and practice.
In practice, however......"

Responder a