Retornar dados de um formulário para outro

Delphi

05/06/2015

Olá pessoal já procurei por vários sites sobre o assunto mas não estou conseguindo realizar essa tarefa que aparentemente é muito simples...

É o seguinte tenho um formulário de cadastro e nele um botão que abre outro formulário com um listview com nomes de profissões, o que quero fazer é ao selecionar uma profissão e clicar no botão ok, feche o formulário das profissões e envie o valor selecionado para o formulário de cadastro...

[img]http://arquivo.devmedia.com.br/forum/imagem/378260-20150605-012919.png[/img]

já tentei por método de variável, tipo no formulário de cadastro, criei uma variável

frm_membros.DBEdit22.assign(profissao)

profissao é uma variável do tipo string que recebe o valor selecionado do listview.

já tentei

frm_membros.DBEdit22.text := listview1.selected.caption;
mas nenhum desses métodos funcionaram...

quem pode me dar uma luz de como realizar essa façanha ?
Alexsandro

Alexsandro

Curtidas 0

Respostas

Jaime Santos

Jaime Santos

05/06/2015

Crie uma var pública no form que tem a profissão e antes de aplicar o terminate neste form passe a var.

Exemplo:

Form das Profissões:
var
Prof: string; //public

form do cadastro:

chama form das profissões
showmodal ou show nele....//dentro dele trata tudo e antes do close dele a var global recebe a profissão
var local do cadastro recebe a var global do form profissões
FreeAndNil(form cadastro);

Att.
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

Olá Jaime, obrigador por sua atenção, tentei fazer da forma que você me passou, no entanto ainda não deu certo, está dando access violate, fiz assim

no formulário que das profissões:

criei uma variável publica no formulário de cadastro e uma variável publica no formulário das profissões

variáveis.

frm_cadastro -> profissao
frm_profissoes -> profiss

criei um botão no formulário das profissões e no evento onclick:

profiss := listview1.selected.caption;
frm_cadastro.profissao := profiss;
close;

ao clicar no botão está dando access violation at address
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

desculpe esqueci de colocar que antes do close do código acima, eu coloquei o FreeAndNil(frm_cadastro)

o código ficou assim:

profiss := listview1.selected.caption;
frm_cadastro.profissao := profiss;
FreeAndNil(frm_cadastro)
close;
GOSTEI 0
Ariel Morgan

Ariel Morgan

05/06/2015

cria um procedimento pra armazenar os dados...

procedure form.capturarProf;
begin
CampoRecebeValor.text := dataModule.tableCAMPO.value;
end;

depois lá no clique do botão... chamando o formulário em tempo de execução
e no botão:
whit botao do
begin
onClick := capturaProf();
end;

tenta isso... qualquer coisa posta ai ;)
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

05/06/2015

Colega conseguiu resolver seu caso?
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

Caro Rbbarreto ... ainda não...
tem alguma idéia?
GOSTEI 0
Ariel Morgan

Ariel Morgan

05/06/2015

faz o Seguinte amigo:
Abra o formulário em tempo de execução como falei..

você vai ter um procedimento que vá armazenar os dados pra depois carregá-los nos edit's:

procedure form1.capturarProf;
begin
CampoRecebeValor.text := dataModule.tableCAMPO.value;
end;

certo?

bom, no click do botão pra chamar ou formulário ou no click do edit que chamará determinado formulário tenta o seguinte:

procedure TForm1.Button1Click(Sender: TObject);
var
ChamaForm: TForm2; //Este seria o formulário com as funções, profissões!
begin
try
ChamaForm := TForm2.Create(Application);//cria o formulário
ChamaForm.ShowModal;

whit Form2do
begin
Button.OnClick := CapturarProf;
end;
finally
FreeAndNil(ChamaForm);
end;
end;
Vai ter que adaptar a sua necessidade e fazer o fechamento da tela ao clicar no OK
qualquer coisa manda um email!
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

opa Ariel... obrigado por responder... ainda não testei mais assim que puder retornaria a resposta...
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

Ariel Morgan queira me desculpar por minha ignorância a respeito do assunto, seu que sua postagem está bem explicada, no entanto não estou conseguindo fazer dessa forma...

estou te enviando o link do que eu fiz como teste e não obtive sucesso.

http://www.4shared.com/rar/tw6aQXrgba/Teste.html

agradeço muito se me informar onde errei... grato...
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

05/06/2015

Caro amigo, ire fazer uma exemplo e disponibilizar no dropbox tudo bem?

você aceita baixo o exemplo ?
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

claro que sim... muito obrigado...
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

05/06/2015

segue o link do dropbox abaixo:

https://www.dropbox.com/s/s2u1jh6cgiv4h2d/Exemplo%20Simples.rar?dl=0

qualquer coisa me avise.
GOSTEI 0
Alexsandro

Alexsandro

05/06/2015

O companheiro muito obrigado mesmo, é exatamente o que preciso... cara me desculpe por minha ignorância como disse no início coisa simples, no entanto não estava conseguindo.. obrigado mesmo...
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

05/06/2015

Caro colega, não se preocupe espero que o exemplo tenha te ajudado, isto é o mais importante, qualquer coisa estamos ai..

Acho que este caso está fechando certo ?
GOSTEI 0
POSTAR