Alow Pedro,
Segue um tutorial explicando como passar e receber valores entre formulários! :)
1 - Vamos imaginar a seguinte situação: A partir do formulário A, você precisa passar um valor para o formulário B, que por sua vez deve retornar um valor para o formulário A.
2 - No formulário A, você deverá chamar o formulário B utilizando o seguinte comando (pode ser no valid de um textbox, em um botão, qualquer lugar):
Do Form FormularioB With ThisForm.ValorIda.Value To m.ValorVolta
3 - Observe que o formulário A enviará o valor de "ThisForm.ValorIda.Value" para o formulário B e ficará aguardando um retorno que será armazenado na variável "m.ValorVolta".
4 - Ao criar o formulário B, a propriedade WindowType deve ser configurada para "1 - Modal". Isto é obrigatório, já que adicionamos a cláusula "To m.ValorVolta" na chamada do formulário B. Esta cláusula é responsável por fazer com que o formulário A fique aguardando o retorno do formulário B.
5 - Crie 2 propriedades no formulário B. Para isso abra o menu Form, New Property. As novas propriedades são: "ValorRecebido" e "ValorRetorno". Na janela Property do VFP (Other), defina essas duas propriedades como caracter (Basta clicar na propriedade e pressionar DELETE) ou numérica (digitando 0).
A primeira propriedade "ValorRecebido" é opcional já que você pode armazenar este valor em um objeto da tela ou até mesmo não armazená-lo já que você pode precisar deste valor apenas no Init do formulário B. Já a segunda propriedade é obrigatória, você entenderá porque no final deste tutorial.
6 - No evento Init do formulário B adicione o seguinte código:
LParameters m.ValorRecebido
ThisForm.ValorRecebido = m.ValorRecebido
7 - No formulário B, você também deve criar um botão (ou ao pressionar uma tecla - evento KeyPress do formulário) para finalizar o formulário e retornar algum valor para o formulário A. Então, no valid do botão (ou KeyPress do formulário) adicione o seguinte código:
ThisForm.ValorRetorno = "Qualquer coisa"
ThisForm.Release
ou, caso o retorno seja numérico:
ThisForm.ValorRetorno = 0
ThisForm.Release
8 - Último passo... No evento UnLoad do formulário B, adicione a seguinte linha:
Return ThisForm.ValorRetorno
Veja só: A propriedade ValorRetorno é obrigatória porque quando o formulário executa o método UnLoad, todos os objetos do formulário já foram destruídos, liberados da memória. Por isso a necessidade de se criar uma propriedade no formulário já que este é o único objeto existente neste momento...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rodolfo Duarte