Re: [delphi-br] Form Dinamico, erro ao acessar objetos...

2009-02-04 Por tôpico Joao Morais
2009/2/4 contato.pcsolution :
> procedure CreateFormFromName(const FormName : string);
> var
> fc : TFormClass;
> f : TForm;
> begin
> fc := TFormClass(FindClass(FormName));
> f := fc.Create(Application);
> f.Show;
> end;

Essa rotina tá perigosa. Arruma pra algo mais ou menos assim:

function CreateFormFromName(const FormName : string): Boolean;
var
  fc : TClass;
  f : TForm;
begin
  fc := FindClass(FormName);
  Result := Assigned(fc) and fc.InheritsFrom(TForm);
  if Result then
fc.Create(Application).Show;
end;

Se retornar False, o form não foi encontrado.


> PARTE QUE ACONTECE O ERRO..
>
> procedure TMainForm.Button1Click(Sender: TObject);
> begin
> FirstForm.Label1.Caption := 'Testando';
> end;

Adapte a rotina acima com os truques desse artigo:

http://blog.joaomorais.com.br/2008/08/31/dica-gerenciamento-form.html

Joao Morais


RE: [delphi-br] Form Dinamico, erro ao acessar objetos...

2009-02-04 Por tôpico Rubem Nascimento da Rocha

Negativo! Leia a minha resposta e saberá exatamente o q está acontecendo!
Sds.


> To: delphi-br@yahoogrupos.com.br
> From: jmariogue...@gmail.com
> Date: Wed, 4 Feb 2009 12:51:42 -0300
> Subject: Re: [delphi-br] Form Dinamico, erro ao acessar objetos...
>
>
> Aparentemente você tem que fazer um typecast, algo mais ou menos assim:
>
>
>
> TFirstForm(FirstForm).Label1.Caption := 'Testando';
>
>
>
> Acredito que a variável FirstForm seja do tipo TForm, onde não existe o
>
> Label1.
>
>
>
> Certo?
>
>
>
_
Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
http://www.amigosdomessenger.com.br/

Re: [delphi-br] Form Dinamico, erro ao acessar objetos...

2009-02-04 Por tôpico José Mário Silva Guedes
Aparentemente você tem que fazer um typecast, algo mais ou menos assim:

TFirstForm(FirstForm).Label1.Caption := 'Testando';

Acredito que a variável FirstForm seja do tipo TForm, onde não existe o
Label1.

Certo?


[As partes desta mensagem que não continham texto foram removidas]



RE: [delphi-br] Form Dinamico, erro ao acessar objetos...

2009-02-04 Por tôpico Rubem Nascimento da Rocha

Se vc prestar bem atenção nesse código que vc postou, vai concluir que a 
instância FirstForm não foi inicializada, e sim uma instância interna que fica 
localmente na rotina CreateFormFromName(). E, por conta disso, o erro (exceção 
que vc não mencionou), com toda certeza é um Access Violation!
 
Sds.


> To: delphi-br@yahoogrupos.com.br
> From: contato.pcsolut...@yahoo.com.br
> Date: Wed, 4 Feb 2009 14:27:38 +
> Subject: [delphi-br] Form Dinamico, erro ao acessar objetos...
>
>
> Olá Pessoal, tudo bem?
>
>
>
> Tenho uma rotinha que cria os forms dinamicamente com variaveis, no
>
> qual funciona corretamente..
>
> Porém não consigo acessar nenhuma propriedade ou objeto deste form
>
> pelo "nome dele"...
>
>
>
> procurei bastante na internet mas nao achei nada
>
>
>
> este link tem o exemplo das rotinas que estou usando...
>
>
>
> http://delphi.about.com/library/weekly/aa080905a.htm
>
>
>
> procedure CreateFormFromName(const FormName : string);
>
> var
>
> fc : TFormClass;
>
> f : TForm;
>
> begin
>
> fc := TFormClass(FindClass(FormName));
>
> f := fc.Create(Application);
>
> f.Show;
>
> end;
>
>
>
> procedure TMainForm.FormCreate(
>
> Sender: TObject);
>
> begin
>
> RegisterClass(TFirstForm);
>
> RegisterClass(TSecondForm);
>
> RegisterClass(TThirdForm);
>
> end;
>
>
>
> procedure TMainForm.CreateFormButtonClick(
>
> Sender: TObject);
>
> var
>
> s : string;
>
> begin
>
> s := 'TFirstForm';
>
> CreateFormFromName(s);
>
> end;
>
>
>
> PARTE QUE ACONTECE O ERRO..
>
>
>
> procedure TMainForm.Button1Click(Sender: TObject);
>
> begin
>
> FirstForm.Label1.Caption := 'Testando';
>
> end;
>
_
Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de relacionamentos 
com até 6,000 fotos!
http://www.amigosdomessenger.com.br