Bom dia a todos Implementei da seguinte maneira: No form, criei um novo constructor chamado CriarFormNF(Documento: TNotaFiscal), sendo que estou passando por referência os dados da classe TNotaFiscal que chamou o form para uma nova instância do TNotaFiscal dentro do form TfrmVisualizaNota = class(TForm) ... private pNotaFiscal: TNotaFiscal; public ... constructor TfrmVisualizaNota.CriarFormNF(Documento: TNotaFiscal); begin inherited Create(Application); pNotaFiscal:= TNotaFiscal.Create; pNotaFiscal:= Documento; end; ... E na classe TNotaFiscal eu chamo da seguinte forma: TNotaFiscal = class ... procedure MostrarNota; ... procedure TNotaFiscal.MostrarNota; begin frmVisualizaNota:= TfrmVisualizaNota.CriarFormNF(Self); ... A princípio funcionou direito (implementei em um projeto de testes). Vou fazer mais testes para ver se ocorre algum problema. Grato a todos Dirceu Jr.
_____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao Morais Enviada em: sexta-feira, 29 de setembro de 2006 09:04 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] POO - Objeto controlando TForm Dirceu Vasson wrote: > Bom dia a todos > > Estou tentando fazer o seguinte > > TNotaFiscal = class > ... > > procedure TNotaFiscal.MostrarNota; > begin > frmVisualizaNota:= TfrmVisualizaNota.Create(Self); // > ... > end; > > E, dentro do form gostaria de acessar os atributos e métodos da classe que > chamou o form, sendo alguma coisa do tipo > > TfrmVisualiza = class(TForm) > ... > > procedure TfrmVisualizaNota.RecuperaInfo; > begin > edNumeroNota.Text:= <Instancia que chamou o form>.NumeroNota;//dá para > usar o owner do form? > edDataNota.Text:= <Instancia que chamou o form>.DataEmissao; > ... > end; Dá, para isto você precisa fazer um cast: edNumeroNota.Text := (Owner as TNotaFiscal).Numero; ... Para isto o seu TNotaFiscal tem que ser decendente de TComponent, o que não é uma idéia muito legal. Para não usar TComponent como a classe base do seu TNotaFiscal, então você pode criar uma propriedade que aponte para o seu objeto de negócio: frmVisualizaNota:= TfrmVisualizaNota.Create(nil); frmVisualizaNota.Subject := Self; esse subject aponta para um TNotaFiscal. Daí você pode fazer assim: edNumeroNota.Text := (Subject as TNotaFiscal).Numero; ... Ainda assim isto não é uma abordagem legal. GUI (forms e componentes visuais) não deve conhecer nada relacionado com objetos de negócio, você precisaria criar outras classes que controlam tanto os objetos de negócio quanto a sua GUI a fim de evitar acoplamento e principalmente aumentar a coesão -- por consequência evitando dores de cabeça e aumentando muito a sua produtividade. Um framework MVP faz exatamente o que você quer e de forma bastante eficiente e produtiva. Se eu puder ajudar, manda um alô. Às ordens, -- João Morais [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html