Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jerfs

passar formulario como parametro

Recommended Posts

Galera,

 

Quero passar um formulario como parametro e depois utilizar um objeto de dentro dele, por exemplo:

 

procedure teste(FORMULARIO: TForm) {
   FORMULARIO.edit1.text := 'TESTE';
}

teste(frmPrincipal);

Quando eu faço isso, não consigo acessar os objetos de dentro do formulario, ele não me dá opção para isso. Será que eu declarar o formulario parametro como TForm tá certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você cria um formulario você esta criando na verdade uma classe que é filha de TForm, ou seja, outra classe.

Quando você solta os componentes no seu form, la no Delphi, na verdade aquele la não é o seu form, e sim a classe que seu Form vai instanciar depois.

Veja na sua Unit1, la na sessão uses, deve estar mais ou menos(depende do nome do seu form) assim: "TForm1 = class(TForm)". Isso ai quer dizer que a classe que seu formulário irá herdar é TForm1, e não TForm, por isso não aparece o Edit1 na sua função.

 

Para a sua função funcionar basta alterar para

 

procedure teste(FORMULARIO: TForm1) {
 FORMULARIO.edit1.text := 'TESTE';
}

Veja que mudei a declaração de "procedure teste(FORMULARIO: TForm)" para "procedure teste(FORMULARIO: TForm1)";

 

:D

 

você poderia tambem ter feito assim:

procedure teste(FORMULARIO: TForm) {
 (FORMULARIO as TForm1).edit1.text := 'TESTE';
}

neste caso você esta dizendo que "FORMULARIO" é um ponteiro para um TForm ou qualquer Classe que herde TForm, por isso, eu coloquei(FORMULARIO as TForm1) para dizer que FORMULARIO deve ser tratado como um TForm1

(o primeiro exemplo é mais facil de entender)

 

 

Ixe, complicado né, e pior que existem outras maneiras de se fazer isso.. hehe, mas espero que ajude:

 

Qualquer coisa pode voltar aqui ou me mandar um e-mail: tonello.rafinha@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.