Deixar função generica

Delphi

04/04/2006

galera, tem como deixar essa função generica?

function TFormPrincipal.ProcuraFormCountry: TFormCountry;
var i : integer;
begin
  result := nil;
  for i := 0 to Screen.FormCount - 1 do
    if(Screen.Forms[i] is TFormCountry)then
    begin
      result := (Screen.Forms[i] as TFormCountry);
      break;
    end;
end;


eu poderia passar o nome do form como parametro para ela, ai ela retorna se o form jah esta aberto ou não.


Zumbi

Zumbi

Curtidas 0

Respostas

Massuda

Massuda

04/04/2006

Pode fazer algo assim...
function TFormPrincipal.ProcuraFormPelaClasse(const AClasse: TFormClass): TForm; 
var
  i : integer; 
begin 
  result := nil; 
  for i := 0 to Screen.FormCount - 1 do 
    if(Screen.Forms[i] is AClasse)then 
    begin 
      result := Screen.Forms[i]; 
      break; 
    end; 
end;
..note que você talvez você tenha que fazer typecast do valor retornado pela função.


GOSTEI 0
Zumbi

Zumbi

04/04/2006

teria como ser esse parametro uma string em vez de TFormClass?


GOSTEI 0
Massuda

Massuda

04/04/2006

[url=http://forum.clubedelphi.net/viewtopic.php?t=63052]Neste tópico[/url] tem um exemplo meu de como criar um form pelo nome da classe; use um esquema parecido para procurar um form pelo nome da classe.


GOSTEI 0
Zumbi

Zumbi

04/04/2006

galera olha ai como ficou minha função.

function ExistsForm(sNomeForm: String): Boolean;
var
  iCont: Integer;
begin
  Result := False;
  for iCont := 0 to Screen.FormCount -1 do
  begin
    if TForm(Screen.Forms[iCont]).Name = sNomeForm then
      Result := True;
      break;
  end;
end;



GOSTEI 0
POSTAR