GARANTIR DESCONTO

Fórum Problema com ponteiro e Application.MainForm #276044

07/04/2005

0

Amigos estou com um problema com ponteiros mas como naum sou acostumado a usar, naum estou conseguindo resolver ....
Dentro do meu MainForm tenho o seguinte :
private 
    FFteste: ^TForm2; 

e no create o seguinte :

procedure TfrmMain.FormCreate(Sender: TObject); 
begin 
  FFteste:=@Form2; 
  Application.CreateForm(TForm2,FFteste^); 
end; 

quando faço isso o form2 é criado blz,porém ele aparece e o form principal naum , ou seja, o form2 acaba se tornando o MainForm da minha aplicação.Alguém sabe me dizer o pq ?


Alexandre_sbo

Alexandre_sbo

Responder

Posts

07/04/2005

Yallebr

ALEXANDRE_SBO

Tente assim

Formulario := TFormulario.Create(nil).

Essa forma

Application.CreateForm(TForm2,FFteste^); 


Realmente é para criar o form principal.

Obejto := Classe.Create seria o correto.


Responder

Gostei + 0

07/04/2005

Massuda

O código que você postou foge um pouco do usual, principalmente porque ele está no evento OnCreate do que parece ser seu form principal. Dava para você esclarecer qual o objetivo desse código? Porque me parece que, na prática, ele equivale a escrever
procedure TfrmMain.FormCreate(Sender: TObject); 
begin 
  Application.CreateForm(TForm2, Form2); 
  FFteste:=@Form2; 
end;



Responder

Gostei + 0

07/04/2005

Alexandre_sbo

Massada vou tenta explicar o que quero fazer pra vc ....
é assim eu tenho o dmconexaoPadrao,FrmMainPadrao e FrmLoginPadrao,
Dai faço uma herança dos Ficando dmConexao,FrmMain,frmLogin....
Dai no create no frmmain antes inherited, e seto uma variavel login:=@frmlogin
dai no create do frmmainPadrao eu quero criar o frmlogin e fazer algumas coisa com ele .....


Responder

Gostei + 0

07/04/2005

Alexandre_sbo

to mandando o codigo do frmMainPadrao pra ver se fica mais facil de entender o que preciso......

  {cria classe de configuração}
  Configuracoes:=TConfiguracoes.Create;
  with frmSplash,Configuracoes.Geral do
    begin
      {checa se a applicação já existe}
      ChecaApplicationTitle;
      {cria tela de splash}
      frmSplash := TfrmSplash.Create(Application);
      try
        frmSplash.Show;
        frmSplash.Update;
        AtualizaGauge(Gauge,1,30);
        {Cria Dm de Conexao}
        Application.CreateForm(TDmConexaoPadrao,Conexao^);
        AtualizaGauge(Gauge,31,60);
        with Conexao^ do
          begin
            {Conecta no banco com usuario sysdba para Carregar Configurações iniciais}
            Conectar(UsuarioRoot,SenhaRoot);
            AtualizaGauge(Gauge,61,80);
            {seta usuario root para user control}
            ControleUsuario:=TControleUsuario.Create(IBOUserControl,MailUserControl,Database,UsuarioRoot,SenhaRoot);
            {caso o controle de usuario seja por empresa arruma o titulo da applicação para o usercontrol}
            if FControlePorEmpresa then
              IBOUserControl.ApplicationID:=Application.Title + IntToStr(Empresa.Codigo);
            CarregaConfPadrao(CampoImagem,cds,self.img);
            AtualizaGauge(Gauge,81,90);
            {cria tela de login --> ela deve ser chamada de frmLogin e ser registrada no initialization do main herdado}
            Application.CreateForm(TComponentClass(GetClass(´TfrmLogin´)),Login^);
            AtualizaGauge(Gauge,91,100);
            Empresa.Codigo:=EmpresaPadrao;
          end; { <-- with }
        {atualiza envio de e-mail}
        ConfigMadExcept.updateSubject(Conexao^.UsuarioRoot,ClienteAgsi);
        {seta caption}
        Self.Caption:=´Menu - ´+Application.Title;
      finally
        frmSplash.Free;
      end;
    end; { <-- with }



Responder

Gostei + 0

07/04/2005

Massuda

Mantendo o foco no seu problema original...
quando faço isso o form2 é criado blz,porém ele aparece e o form principal naum , ou seja, o form2 acaba se tornando o MainForm da minha aplicação.
Acho que isso está acontencendo porque o primeiro form criado em um aplicativo Delphi através do método TApplication.CreateForm é assumido pela VCL como sendo o form principal da aplicação.

No seu caso, como está o código que cria sua janela principal (TfrmMain) no .DPR?


Responder

Gostei + 0

07/04/2005

Alexandre_sbo

é o frmmain ....
e esta acontecendo isso que vc disse mesmo...ele está assumindo o primeiro form criado....


Responder

Gostei + 0

07/04/2005

Massuda

e esta acontecendo isso que vc disse mesmo...ele está assumindo o primeiro form criado....
Geralmente no .DPR do projeto o código é parecido com isto:
begin
  Application.Initialize;
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
  Application.Terminate;
end.
acho que por algum motivo qualquer seu código deve estar diferente. Para ver o DPR de seu projeto, vá em [b:3824603663]Project|View source[/b:3824603663].


Responder

Gostei + 0

07/04/2005

Alexandre_sbo

este desse jeito sim...mudei o algoritmo e consegui arrumar meu problema ...vlw...........


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar