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