Como se cria uma procedure?
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;
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
Curtidas 0
Respostas
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?
ao invés de ´ChamaForm(Form1, TForm1)´
use ´Form1.ShowModal´
Qual o propósito da Procedure?
GOSTEI 0
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
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
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
18/11/2003
Valeu Ataliba deu certo, quem sabe, sabe né?
GOSTEI 0