Fórum Passar parametro para form. #164045

02/06/2003

0

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.


Gedai

Gedai

Responder

Posts

02/06/2003

Leandro Ribas

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.


Responder

Gostei + 0

02/06/2003

Gedai

O ´/sai´ é o parametro que quero passar? Poderia ser um pouco mais detalhado, pois não entendi muito bem.


Responder

Gostei + 0

02/06/2003

Gedai

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.


Responder

Gostei + 0

02/06/2003

Leandro Ribas

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.


Responder

Gostei + 0

02/06/2003

Nildo

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);


Responder

Gostei + 0

02/06/2003

Gedai

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]


Responder

Gostei + 0

02/06/2003

Nildo

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;


Responder

Gostei + 0

02/06/2003

Nildo

Mais uma coisa: Use o nome do usuario sem espaços, senaum ele entende como parametro diferente


Responder

Gostei + 0

02/06/2003

Gedai

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.


Responder

Gostei + 0

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

Aceitar