Como se cria uma procedure?

Delphi

18/11/2003

Estou começando a desenvolver agora, e quero criar uma procedure que chame os forms da minha aplicação. Fiz o código abaixo mas está dando o seguinte erro: //Incompatible types: ´TForm´ and ´Class reference´//, o que posso fazer?

procedure ChamaForm (FormX,TFormX : TForm);
begin
if not assigned(FormX) then
begin
try
FormX := TFormX.Create(FormX);
FormX.ShowModal;
finally
FreeAndNil(FormX);
end;
end;
end;


Adriano Dantas

Adriano Dantas

Curtidas 0

Respostas

Okama

Okama

18/11/2003

Não testei o código, mas se vai passar um FORM como parâmetro, porque não o chama diretamente?


ao invés de ´ChamaForm(Form1, TForm1)´
use ´Form1.ShowModal´

Qual o propósito da Procedure?


GOSTEI 0
Beppe

Beppe

18/11/2003

Se você seguiu a convenção de nomes FormX é um objeto e TFormX é uma referência para uma classe de formulário.
procedure ChamaForm(FormX: TFormX); 
begin 
  if not assigned(FormX) then 
  try 
    FormX := TFormX.Create(nil); 
    FormX.ShowModal; 
  finally 
    FreeAndNil(FormX); 
  end; 
end;



GOSTEI 0
Adriano Dantas

Adriano Dantas

18/11/2003

Ô Okama, o propósito é o seguinte o meu form principal vai chamar uns 50 forms, então não quero ter que repetir o código todo, por isso queria uma procedure em que eu só precisasse passar o nome do form, entendeu?


GOSTEI 0
Beppe

Beppe

18/11/2003

Então pode ser assim:

procedure ChamaForm(FormClass: TFormClass); 
begin 
  with FormClass.Create(nil) do
  try 
    ShowModal; 
  finally 
    Free;
  end; 
end;

procedure ChamaFormEx(Form: TForm; FormClass: TFormClass); 
begin
  if Form = nil then Form := FormClass.Create(nil);
  with Form do
  try 
    ShowModal; 
  finally 
    Free;
  end; 
end;



GOSTEI 0
Adriano Dantas

Adriano Dantas

18/11/2003

Valeu Ataliba deu certo, quem sabe, sabe né?


GOSTEI 0
POSTAR