Passar parametro para form.
Amigos estou desenvolvendo um sistema com vários módulos.
Tenho uma tela principal que chama os demais módulos.
Cada módulo, inclusive a tela principal é um exe.
Para abrir a tela principal é solicitado login de usuário.
Como posso passar o usuário que logou na tela principal para o módulo que o usuário acessar?Ou seja, como posso chamar um outro executável em meu sistema passando dados como parametro para ele?
Agradeço se puderem me ajudar.
Tenho uma tela principal que chama os demais módulos.
Cada módulo, inclusive a tela principal é um exe.
Para abrir a tela principal é solicitado login de usuário.
Como posso passar o usuário que logou na tela principal para o módulo que o usuário acessar?Ou seja, como posso chamar um outro executável em meu sistema passando dados como parametro para ele?
Agradeço se puderem me ajudar.
Gedai
Curtidas 0
Respostas
Leandro Ribas
02/06/2003
dentro do programa que vc quer chamar cvc faz assim:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
for I := 1 to ParamCount do begin
if ParamStr(I) = ´/sai´ then
Application.Terminate;
end;
e no programa principal vc faz assim:
procedure TPrincipal.Button1Click(Sender: TObject);
var
Erro: Word;
begin
Erro := WinExec(´arquivo.exe /sai´, SW_SHOW);
if Erro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);
end;
Falou.
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
for I := 1 to ParamCount do begin
if ParamStr(I) = ´/sai´ then
Application.Terminate;
end;
e no programa principal vc faz assim:
procedure TPrincipal.Button1Click(Sender: TObject);
var
Erro: Word;
begin
Erro := WinExec(´arquivo.exe /sai´, SW_SHOW);
if Erro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);
end;
Falou.
GOSTEI 0
Gedai
02/06/2003
O ´/sai´ é o parametro que quero passar? Poderia ser um pouco mais detalhado, pois não entendi muito bem.
GOSTEI 0
Gedai
02/06/2003
O ´/sai´ é o parametro que quero passar? Poderia ser um pouco mais detalhado, pois não entendi muito bem. Por exemplo como posso passar uma variável, pois não saberei qual é o usuário conectado naquela estação.
GOSTEI 0
Leandro Ribas
02/06/2003
vc primeiro faz um login para entrar na tela principal correto, vamos se dizer que depois que o usuario logou no form principal vc guarda o nome do usuario em um a variavel publica chamada de UsuarioLogin, neste caso vc pode fazer assim:
public
UsuarioLogin : String;
end;
var
FRM_Prin: TFRM_Prin;
procedure TPrincipal.Button1Click(Sender: TObject);
var
Erro: Word;
begin
Erro := WinExec(´arquivo.exe /´+UsuarioLogin, SW_SHOW);
if Erro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);
end;
ae no programa que vc esta chamando vc pode fazer assim:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
for I := 1 to ParamCount do begin
if ParamStr(I) <> ´´ then
UsuarioLogado := ParamStr(I);
end;
Falou.
public
UsuarioLogin : String;
end;
var
FRM_Prin: TFRM_Prin;
procedure TPrincipal.Button1Click(Sender: TObject);
var
Erro: Word;
begin
Erro := WinExec(´arquivo.exe /´+UsuarioLogin, SW_SHOW);
if Erro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);
end;
ae no programa que vc esta chamando vc pode fazer assim:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
for I := 1 to ParamCount do begin
if ParamStr(I) <> ´´ then
UsuarioLogado := ParamStr(I);
end;
Falou.
GOSTEI 0
Nildo
02/06/2003
Eh assim:
No programa q vc quer chamar coloca na programacao do Projeto:
if paramStr(1) <> ´/NomeDoUsuario´ then
application.terminate;
E no programa q chama esse outro programa coloca assim:
WinExec(´Seuprograma.exe /NomeDoUsuario´, sw_show);
No programa q vc quer chamar coloca na programacao do Projeto:
if paramStr(1) <> ´/NomeDoUsuario´ then
application.terminate;
E no programa q chama esse outro programa coloca assim:
WinExec(´Seuprograma.exe /NomeDoUsuario´, sw_show);
GOSTEI 0
Gedai
02/06/2003
Estou fazendo como vocês explicaram, mas seu eu passar o parametro dentro da string do winexec funciona perfeitamente, mas quando tento passar como variável da o seguinte erro:
[b:fe126de198]Inconpatyble types:´String´ e ´PAnsiChar´[/b:fe126de198].
Eis o código:
[b:fe126de198]procedure TFormPrincipal.spbAcademicoClick(Sender: TObject);
var
vErro : Word;
vUsr : String;
begin
vUsr:= ´Carlos Caramujo´;
vErro:= WinExec(´C:\Programa\Base\Vendas.exe´ + vUsr, SW_SHOW);
if vErro <= 31 then
ShowMessage(´Erro ao executar o Módulo Vendas.´);
end;[/b:fe126de198]
[b:fe126de198]Inconpatyble types:´String´ e ´PAnsiChar´[/b:fe126de198].
Eis o código:
[b:fe126de198]procedure TFormPrincipal.spbAcademicoClick(Sender: TObject);
var
vErro : Word;
vUsr : String;
begin
vUsr:= ´Carlos Caramujo´;
vErro:= WinExec(´C:\Programa\Base\Vendas.exe´ + vUsr, SW_SHOW);
if vErro <= 31 then
ShowMessage(´Erro ao executar o Módulo Vendas.´);
end;[/b:fe126de198]
GOSTEI 0
Nildo
02/06/2003
Faz assim:
procedure TFormPrincipal.spbAcademicoClick(Sender: TObject);
var
vErro : Word;
vUsr : String;
begin
vUsr:= ´Carlos Caramujo´;
vErro:= WinExec(PChar(´C:\Programa\Base\Vendas.exe /´ + vUsr), SW_SHOW);
if vErro <= 31 then
ShowMessage(´Erro ao executar o Módulo Vendas.´);
end;
procedure TFormPrincipal.spbAcademicoClick(Sender: TObject);
var
vErro : Word;
vUsr : String;
begin
vUsr:= ´Carlos Caramujo´;
vErro:= WinExec(PChar(´C:\Programa\Base\Vendas.exe /´ + vUsr), SW_SHOW);
if vErro <= 31 then
ShowMessage(´Erro ao executar o Módulo Vendas.´);
end;
GOSTEI 0
Nildo
02/06/2003
Mais uma coisa: Use o nome do usuario sem espaços, senaum ele entende como parametro diferente
GOSTEI 0
Gedai
02/06/2003
Muito obrigado a ambos, consegui, muito boa dica a de vocês dois. Valeu mesmo. Se precisarem de ajuda também é só pedir.
Só uma observação, posso passar o nome do usuário com espaços. É só colocá-lo entre aspas duplas:
vUsr := ´´Carlos Caramujo´´;
funciona muito bem.
Mais uma vez obrigado.
Só uma observação, posso passar o nome do usuário com espaços. É só colocá-lo entre aspas duplas:
vUsr := ´´Carlos Caramujo´´;
funciona muito bem.
Mais uma vez obrigado.
GOSTEI 0