Re: [delphi-br] Ajuda em criação de um form.

2007-05-07 Por tôpico Ricardo Lima
Ok, porem eu preciso ter esse código no Create do FormA.


  - Original Message - 
  From: Sérgio T. Uetanabaro 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Monday, May 07, 2007 10:10 AM
  Subject: RES: [delphi-br] Ajuda em criação de um form.


  É só vc instanciar FORMB aon inves de FORMA. Ex:

  Var 
  Form1:TFormA;
  Begin
  Form1 := TFormB.Create(nil);
  restante do codigo
  Form1.Free;
  End;

  []´s


  Sergio


  _ 

  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
  nome de Ricardo Lima
  Enviada em: segunda-feira, 7 de maio de 2007 09:48
  Para: delphi-br@yahoogrupos.com.br
  Assunto: [delphi-br] Ajuda em criação de um form.

  Pessoal tenho a seguinte situação.

  FormA e FormB, o FormB herda do formA, no create do FormA eu queria que seja
  criada uma stancia do FormB ao inves do FormA.

  Tipo assim:

  constructor TFormA.Create(AOwner: TComponent);
  begin
  Self := TFormA.Create(AOwner);
  end;

  Alguem tem algum ideia?

  Obrigado a todos.

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

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



   

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



Re: [delphi-br] Ajuda em criação de um form.

2007-05-07 Por tôpico Joao Morais
Ricardo Lima wrote:
 Ok, porem eu preciso ter esse código no Create do FormA.

Tem um meio de fazer isto de forma eficiente, mas eu preciso que você 
detalhe um pouco mais o que você precisa fazer.

--
Joao Morais


 
   - Original Message - 
   From: Sérgio T. Uetanabaro 
   To: delphi-br@yahoogrupos.com.br 
   Sent: Monday, May 07, 2007 10:10 AM
   Subject: RES: [delphi-br] Ajuda em criação de um form.
 
 
   É só vc instanciar FORMB aon inves de FORMA. Ex:
 
   Var 
   Form1:TFormA;
   Begin
   Form1 := TFormB.Create(nil);
   restante do codigo
   Form1.Free;
   End;
 
   []´s
 
 
   Sergio
 
 
   _ 
 
   De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
   nome de Ricardo Lima
   Enviada em: segunda-feira, 7 de maio de 2007 09:48
   Para: delphi-br@yahoogrupos.com.br
   Assunto: [delphi-br] Ajuda em criação de um form.
 
   Pessoal tenho a seguinte situação.
 
   FormA e FormB, o FormB herda do formA, no create do FormA eu queria que seja
   criada uma stancia do FormB ao inves do FormA.
 
   Tipo assim:
 
   constructor TFormA.Create(AOwner: TComponent);
   begin
   Self := TFormA.Create(AOwner);
   end;
 
   Alguem tem algum ideia?
 
   Obrigado a todos.
 



Re: [delphi-br] Ajuda em criação de um form.

2007-05-07 Por tôpico Ricardo Lima
Eu quero fazer uma alteração na herança do form, antes dele ser criado.

Eu fiz esse código

constructor TFormMasterCadastro.Create(AOwner: TComponent);
   type PClass = ^TClass;
begin
   PClass(Self)^ := ClassFormMasterCadastro;
   inherited;
end;

Funciona pra eu alterar a classe do form, porem o que eu quero alterar é o 
parent da classe algo tipo assim:

PClass(Self.ClassParent)^ := ClassFormMasterCadastro;


Obrigado.



  - Original Message - 
  From: Joao Morais 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Monday, May 07, 2007 10:32 AM
  Subject: Re: [delphi-br] Ajuda em criação de um form.


  Ricardo Lima wrote:
   Ok, porem eu preciso ter esse código no Create do FormA.

  Tem um meio de fazer isto de forma eficiente, mas eu preciso que você 
  detalhe um pouco mais o que você precisa fazer.

  --
  Joao Morais

   
   - Original Message - 
   From: Sérgio T. Uetanabaro 
   To: delphi-br@yahoogrupos.com.br 
   Sent: Monday, May 07, 2007 10:10 AM
   Subject: RES: [delphi-br] Ajuda em criação de um form.
   
   
   É só vc instanciar FORMB aon inves de FORMA. Ex:
   
   Var 
   Form1:TFormA;
   Begin
   Form1 := TFormB.Create(nil);
   restante do codigo
   Form1.Free;
   End;
   
   []´s
   
   
   Sergio
   
   
   _ 
   
   De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
   nome de Ricardo Lima
   Enviada em: segunda-feira, 7 de maio de 2007 09:48
   Para: delphi-br@yahoogrupos.com.br
   Assunto: [delphi-br] Ajuda em criação de um form.
   
   Pessoal tenho a seguinte situação.
   
   FormA e FormB, o FormB herda do formA, no create do FormA eu queria que seja
   criada uma stancia do FormB ao inves do FormA.
   
   Tipo assim:
   
   constructor TFormA.Create(AOwner: TComponent);
   begin
   Self := TFormA.Create(AOwner);
   end;
   
   Alguem tem algum ideia?
   
   Obrigado a todos.
   



   

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



Re: [delphi-br] Ajuda em criação de um form.

2007-05-07 Por tôpico Joao Morais
Ricardo Lima wrote:

 Eu quero fazer uma alteração na herança do form, antes dele ser criado.
 
 Eu fiz esse código
 
 constructor TFormMasterCadastro.Create(AOwner: TComponent);
type PClass = ^TClass;
 begin
PClass(Self)^ := ClassFormMasterCadastro;
inherited;
 end;
 
 Funciona pra eu alterar a classe do form, porem o que eu quero alterar é o 
 parent da classe algo tipo assim:
 
 PClass(Self.ClassParent)^ := ClassFormMasterCadastro;

Quando você cria a instância de uma classe, o compilador reserva espaço 
suficiente para abrigar todos os membros da classe.

A instância é criada antes da sua chamada a PClass(Self)..., e não pelo 
inherited, portanto o seu hacking pode até ter funcionado, mas a sua dor 
de cabeça será diretamente proporcional a euforia em botar a coisa toda 
pra funcionar. Recomendação de quem adora um hacking: foge disso.

Ao invés de fazer com que o construtor altere a própria classe, faça com 
que a chamada seja feita através de um ponteiro para classe:

var
   VFormClass: TFormClass;

...

   VFormClass := TFormB;

...

   VMeuForm := VFormClass.Create(nil);

limpo, bonito, seguro, orientado a objetos, e o melhor de tudo: funciona 
muito bem.

Pra fechar, você ainda não me disse o que você quer *realmente* fazer.

--
Joao Morais


Re: [delphi-br] Ajuda em criação de um form.

2007-05-07 Por tôpico Ricardo Lima
Vou explicar o que eu estou querendo fazer:

Tenho um FormHeranca que serve de herança para outros forms(tem uns 100 forms 
herdados dele), e é utilizado em todos os projetos(aplicações) da empresa.
Porem em um dos projetos que utiliza esse form como herança sentiu a 
necessidade de se fazer um código na herança para que funcione em todos os 
forms somente desse projeto, os forms de outros projetos não precisam desse 
código, primeiro eu pensei em criar outro form herdando de FormHerança  e mudar 
toda a aplicação para que herdasse desse novo form, ou tentar fazer dessa 
forma, eu passaria um parametro pro form informando a classe pai e no create eu 
trocaria essa classe.


Entendeu?

Qual solução você acha melhor pra esse caso?

Obriagado.



  - Original Message - 
  From: Joao Morais 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Monday, May 07, 2007 1:38 PM
  Subject: Re: [delphi-br] Ajuda em criação de um form.


  Ricardo Lima wrote:

   Eu quero fazer uma alteração na herança do form, antes dele ser criado.
   
   Eu fiz esse código
   
   constructor TFormMasterCadastro.Create(AOwner: TComponent);
   type PClass = ^TClass;
   begin
   PClass(Self)^ := ClassFormMasterCadastro;
   inherited;
   end;
   
   Funciona pra eu alterar a classe do form, porem o que eu quero alterar é o 
parent da classe algo tipo assim:
   
   PClass(Self.ClassParent)^ := ClassFormMasterCadastro;

  Quando você cria a instância de uma classe, o compilador reserva espaço 
  suficiente para abrigar todos os membros da classe.

  A instância é criada antes da sua chamada a PClass(Self)..., e não pelo 
  inherited, portanto o seu hacking pode até ter funcionado, mas a sua dor 
  de cabeça será diretamente proporcional a euforia em botar a coisa toda 
  pra funcionar. Recomendação de quem adora um hacking: foge disso.

  Ao invés de fazer com que o construtor altere a própria classe, faça com 
  que a chamada seja feita através de um ponteiro para classe:

  var
  VFormClass: TFormClass;

  ...

  VFormClass := TFormB;

  ...

  VMeuForm := VFormClass.Create(nil);

  limpo, bonito, seguro, orientado a objetos, e o melhor de tudo: funciona 
  muito bem.

  Pra fechar, você ainda não me disse o que você quer *realmente* fazer.

  --
  Joao Morais


   

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