Passando o valor de uma variável da tela de login para o formulário principal através do projet
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.
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.
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
Curtidas 0
Respostas
Emerson Nascimento
08/08/2021
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?
se você colocar um breakpoint na linha FreeAndNil(Frm_Sys_Login); as variáveis acima têm valor?
GOSTEI 0
Paulo
08/08/2021
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.
GOSTEI 0
Emerson Nascimento
08/08/2021
talvez o sistema esteja se confundindo, visto que as variáveis têm os mesmos nomes.
tente assim:
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;
GOSTEI 0
Paulo
08/08/2021
talvez o sistema esteja se confundindo, visto que as variáveis têm os mesmos nomes.
tente assim:
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
GOSTEI 0