Retorno de Valores em Forms

Delphi

31/08/2005

Olá!

Crio dinamicamente apartir de um form -> cadastro
e mostro em ´modal´
um form -> consulta.
(frm_consulta.showmodal)

no form -> consulta tem
um grid,
um edit,
um button localizar,
um button fechar.

no caso vou fazer um select no campo -> nome
com o valor informado no -> edit
quando clicado em -> localizar

na query, digamos que retorne ´N´ registros
com os respectivos campos
-> nome
-> chave.
O usuario teria que selecionar no grid
um determinado -> nome,
e neste momento eu pegaria -> a chave

Não sei como trazer para o
form -> cadastro (que chamou)
o form -> consulta
o valor da -> chave (uma string)
quando o usuário clicar no botão fechar.

eu teria que testar se retornou -> sem conteudo
(não achou dados ou o usuário não selecionou)
ou se retornou alguma -> chave
(achou e o usuario selecionou no grid)

para pesquisar se for o caso -> a chave
para mostrar todos os dados (campos)
no form -> cadastro
para edição, exclusão, etc.

utilizo delphi 7, dbexpress, firebird.

grato se puderem me dar um exemplo.
User-BA


Userba

Userba

Curtidas 0

Respostas

Kenio_c

Kenio_c

31/08/2005

Ola amigo,
De uma olhada no comando Locate, ele funciona assim
vc seleciona a chave primaria e passa como um parametro a qual ele vai setar, no seu caso onde a pesso clicar no seu grid, depois no close do formulario passa esse comando que no seu outro form estara as informacoes setadas.


GOSTEI 0
Userba

Userba

31/08/2005

Ola amigo, De uma olhada no comando Locate, ele funciona assim vc seleciona a chave primaria e passa como um parametro a qual ele vai setar, no seu caso onde a pesso clicar no seu grid, depois no close do formulario passa esse comando que no seu outro form estara as informacoes setadas.


Deixe-me tentar explicar melhor...

no form da consulta vou utilizar um ex:
sqlquery1 para executar uma SQL.
mas eu preciso que uma ´variável´ me retorne
a chave selecionada ou um valor ´´ (em branco)
caso não localize registros.

Porque no form que chamou o da consulta
eu vou ter fazer um outro SQL (mais complexo)
em outra sqlquery2
com base no valor de tal variável
(que seria a -> chave, caso ela tenha retorno <> de branco ´´).

essa chave é do tipo string.

Será que eu tenho que criar uma varíavel ´global´
para assumir o valor da ´chave´ ou em ´branco´...
(resulta de sqlquery1)
de forma que eu possa enchergar este ´valor´
no form que chamou?

Fico pensando se tem como chamar um form passando um parametro.
no caso a variavel que retornaria o resultado da consulta :
s_resultado_consulta (a chave ou em branco)

he he he..
algo parecedido com:
frm_consulta.showmodal(s_resultado_consulta);

e quando o form da consulta fosse fechado
eu tivesse como retorno
a variavel s_resultado_consulta já preenchida
(com a chave ou em branco).

normalmente chamo meus forms assim:

procedure Tfrm_principal.mnu_usuariosClick(Sender: TObject);
var
frm_usuarios : Tfrm_usuarios;
begin
frm_usuarios := Tfrm_usuarios.Create(Application);
frm_usuarios.ShowModal;
frm_usuarios.Free;
end;

utilizo delphi7, dbexpress, firebird.


GOSTEI 0
Rjun

Rjun

31/08/2005

Crie uma propriedade no seu form de consulta que armazene o codigo de retorno. Depois no form q chamou a consulta você acessa essa propriedade.


GOSTEI 0
José Henrique

José Henrique

31/08/2005

userba,
Esta dica pode complementar o que você está procurando: você pode usar o retorno do método .ShowModal para saber que tecla o usuário apertou no frm_usuarios
if frm_usuarios.ShowModal = idOk then
      //apertou o botão OK
else
     //apertou Cancelar (ou outro ou fechou);
frm_usuarios.Free


No frm_usuarios você tem que acertar a propriedade ´ShowModal´ dos botões conforme o desejado (mrOk, mrCancel etc.) ou atribuir via código antes de fechar o form:
ModalResult := mrOK;



GOSTEI 0
POSTAR