Passando o valor de uma variável da tela de login para o formulário principal através do projet
08/08/2021
0
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
Posts
09/08/2021
Emerson Nascimento
se você colocar um breakpoint na linha FreeAndNil(Frm_Sys_Login); as variáveis acima têm valor?
09/08/2021
Paulo
Não funciona ao passar p/ o main form.
Sim.
09/08/2021
Emerson Nascimento
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;
09/08/2021
Paulo
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
Clique aqui para fazer login e interagir na Comunidade :)