Passando informação por parâmetros do windows

04/04/2014

0

Bom dia Pessoal

Sou novo no delphi e tenho algumas duvidas que não consigo achar solução, entre elas a mais crítica está mencionado abaixo.
Eu estou desenvolvendo um sistema em módulos independentes, exemplo, cadastro de cliente, fornecedor, etc... eu criei um form principal que terá todos os pontos de acesso aos demais módulos, inclusive o login está no form principal.

Na criação do modulo, exemplo, cadastro de Serviço, no evento ONCREATE eu coloco o seguinte código.

procedure Tform_CadServico.FormCreate(Sender: TObject);
begin
if ParamStr(1)= 'parametro 123' then
begin
if form_TabelaServico = nil then
begin
form_tabelaservico := Tform_tabelaservico.Create(Self);
form_tabelaservico.ShowModal;
end;
end
else
begin
ShowMessage(' ERRO DE CONEXÃO COM SISTEMA...'+#13+''+#13+''+#13+'FAVOR ENTRAR EM CONTATO COM SUPORTE TÉCNICO');
Application.Terminate;
end;
end;

feito isso, vou no form principal e chamo o modulo "cadastro de serviço"

WinExec('cadservico.exe parametro123',SW_NORMAL);

Até agora ele executa normalmente, o meu problema é que eu não sei como fazer para passar o parametro do usuario que está logado no form principal aparecer no momento que for abrir o cadastro de serviços, o componente que irá aparecer a informação do usuário é uma dbedit, "dbfuncionario"

eu utilizo a versão delphi XE2 e banco de dados firebird, se puder me ajudar sere eternamente grato.
Rafael Panizza

Rafael Panizza

Responder

Posts

04/04/2014

Lucas Ramos

Se desejar pegar o usuário da máquina Host Name poderá utilizar a função GetHostName declarada na uses WinSock

Buffer é um array de char 0..255
GetHostName(Buffer, SizeOf(Buffer))

ou se quiser passar como parâmetro no winexec passa depois do param123, para capturar esse valor pegue do argumento ParamStr(2), não sei lhe dizer a quantidade de argumentos que poderá utilizar.
Responder

04/04/2014

Rafael Panizza

Bom dia Lucas, obrigado por responder,

sou novato e não tenho muita noção

a segunda opção é a mais indicada.

A minha intensão é passar o parametro string "usuario" que está no form principal para o dbedit que está no form cadastro de serviço via código.

se tiver um exemplo de código para postar
Responder

04/04/2014

Diego Garcia

Amigo, você pode trabalhar com mensagens do windows, talvez seja uma boa opção no seu cenário. Segue um texto sobre:

http://drgarcia1986.wordpress.com/2013/06/05/utilizando-as-mensagens-do-windows-no-delphi/
Responder

06/04/2014

Rafael Panizza

Boa noite Diego...obrigado pelo artigo,

Desculpe a minha expressão... não sou iniciante e sim pré iniciante de delphi... rsrsrrs, mas creio que será útil pra mim um pouco mais pra frente quando eu tiver uma noção maior da capacidade do Delphi com integração do windows.

Não sei se o que eu estou querendo é complexo demais ou não, a minha ideia é que o formulário principal armazenasse a informação do usuário logado,...e quando eu abrisse o formulário cadastro....o próprio formulário cadastro pegaria a informação do usuário logado que estaria armazenada no formulário principal.

quando eu vou chamar o formulário cadastro pelo fomulário principal eu uso uma Winexec ('cadastro 123', SW_NORMAL); // parâmetro que eu defini no fomulário até essa parte pra mim está ok....o que é na onde que eu insiro o parâmetro no form principal e como recebo o parâmetro no form cadastro

para que eu possa intender melhor se tivesse um exemplo de código me mostrando.

grato pela ajuda
Responder

25/04/2014

Rafael Panizza

Amigo, você pode trabalhar com mensagens do windows, talvez seja uma boa opção no seu cenário. Segue um texto sobre:

http://drgarcia1986.wordpress.com/2013/06/05/utilizando-as-mensagens-do-windows-no-delphi/


Consegui em partes, veja se consegue me ajudar

no form principal chamei o form_cadservico da seguinte forma

winexec ('cadservico.exe parâmetro1 parâmetro2',sw_normal); //o parâmetro1 é para abrir o form_cadservico e o parâmetro2 é referente ao usuário logado

meu problema é que o parametro2 não é constante, ele vem de uma edit, exemplo

parâmetro2 := edit1.text;

tentei fazer direto => winexec ('cadservico.exe parâmetro1 edit1.text ',sw_normal); // não deu certo devido a aceitar somente string

alguém teria uma ideia de como posso fazer isso!!!

grato

Responder

25/04/2014

Cauê Nishijima

Faz um format simples, assim :

      WinExec(PChar(Format('cadservico.exe %s %s', [parâmetro1, edit1.text])), sw_normal);
Responder

25/04/2014

Rafael Panizza

Faz um format simples, assim :

      WinExec(PChar(Format('cadservico.exe %s %s', [parâmetro1, edit1.text])), sw_normal);


Cauê Nishijima, obrigado pela ajuda!!!

vou tentar aqui e te respondo se deu certo

vlw

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar