Passando o valor de uma variável da tela de login para o formulário principal através do projet

08/08/2021

0

Boa tarde, eu preciso passar o ID do usuário e o nome dele para a tela principal. Estou criando os Forms da seguinte maneira no view source do projet.


var USR_ID, USR_NOME, MAIN_CAPTION : String;
    hMutex: Thandle;

if WaitForSingleObject(hMutex,0) <> wait_TimeOut then begin
    Application.Initialize;
    Application.CreateForm(TDM, DM);
    Application.CreateForm(TFrm_Sys_Login, Frm_Sys_Login);
    { Caso o retorno da tela seja Ok }
    if Frm_Sys_Login.ShowModal = mrOk then begin
      USR_ID        :=  uLogin.USRID;
      USR_NOME      :=  uLogin.USRNOME;
      MAIN_CAPTION  :=  uLogin.MAINCAPTION;
      FreeAndNil(Frm_Sys_Login);
      Application.CreateForm(TFrm_Sys_Main, Frm_Sys_Main);
      Frm_Sys_Main.Caption  :=  MAIN_CAPTION;
      uMain.USR_Nome        :=  USR_NOME;
      uMain.ID              :=  USR_ID;
      Application.Run;
    end else begin
      Application.Terminate;
    end;
  end else begin
    Application.Terminate;
  end;

Através da tela de login eu jogo o valor nas variáveis do projet e depois eu jogo do projet para o mainform. Porém quando passo o valor das variáveis USR_ID, USR_NOME para as variáveis do main form não funciona elas ficam em branco.

Já tentei dar um FreeAndNil depois da criação do main form e passar as variáveis diretamente mas ai fecha o mainform também.

Não sei se essa é a melhor forma ou a forma mais correta de passar os valores para o main form.
Paulo

Paulo

Responder

Posts

09/08/2021

Emerson Nascimento

não funciona ao passar para o main form, ou não funciona ao pegar do login?

se você colocar um breakpoint na linha FreeAndNil(Frm_Sys_Login); as variáveis acima têm valor?

Responder

09/08/2021

Paulo

não funciona ao passar para o main form, ou não funciona ao pegar do login?



Não funciona ao passar p/ o main form.

se você colocar um breakpoint na linha FreeAndNil(Frm_Sys_Login); as variáveis acima têm valor?



Sim.

Responder

09/08/2021

Emerson Nascimento

talvez o sistema esteja se confundindo, visto que as variáveis têm os mesmos nomes.
tente assim:
    if Frm_Sys_Login.ShowModal = mrOk then
    begin
      Application.CreateForm(TFrm_Sys_Main, Frm_Sys_Main);
      Frm_Sys_Main.Caption  :=  uLogin.MAIN_CAPTION;
      uMain.USR_Nome        :=  uLogin.USR_NOME;
      uMain.ID              :=  uLogin.USR_ID;
      FreeAndNil(Frm_Sys_Login);
      Application.Run;
    end
    else
      Application.Terminate;


Responder

09/08/2021

Paulo

talvez o sistema esteja se confundindo, visto que as variáveis têm os mesmos nomes.
tente assim:
    if Frm_Sys_Login.ShowModal = mrOk then
    begin
      Application.CreateForm(TFrm_Sys_Main, Frm_Sys_Main);
      Frm_Sys_Main.Caption  :=  uLogin.MAIN_CAPTION;
      uMain.USR_Nome        :=  uLogin.USR_NOME;
      uMain.ID              :=  uLogin.USR_ID;
      FreeAndNil(Frm_Sys_Login);
      Application.Run;
    end
    else
      Application.Terminate;




Fazendo dessa forma quando chega no

FreeAndNil(Frm_Sys_Login);


Ele some com o mainform
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar