Passar Parâmetro para um form e retornar outro
bom dia a todos,
Preciso duma ajuda para desenvolver uma rotina que faça o seguinte:
Tenho dois forms(form1, form2) o form 1 abre o form2 através dum botão e passa um parametro para o form2 ao fechar o form2 passo um outro parametro para o form1; estes forms não são herdados. Os parâmentros são variáveis(string, inteiro). Tem como fazer isso? Alguem poderia ajudar?
Delphi 2007
Obrigado.
Preciso duma ajuda para desenvolver uma rotina que faça o seguinte:
Tenho dois forms(form1, form2) o form 1 abre o form2 através dum botão e passa um parametro para o form2 ao fechar o form2 passo um outro parametro para o form1; estes forms não são herdados. Os parâmentros são variáveis(string, inteiro). Tem como fazer isso? Alguem poderia ajudar?
Delphi 2007
Obrigado.
Adriherbal
Curtidas 0
Respostas
Osocram
13/08/2009
posta aqui o seu codigo de chamada do form2.
vc pode fazer algo do tipo
if form2.showmodal = mrOK then begin
form1.parametro := form2.parametro
end;
vc pode fazer algo do tipo
if form2.showmodal = mrOK then begin
form1.parametro := form2.parametro
end;
bom dia a todos,
Preciso duma ajuda para desenvolver uma rotina que faça o seguinte:
Tenho dois forms(form1, form2) o form 1 abre o form2 através dum botão e passa um parametro para o form2 ao fechar o form2 passo um outro parametro para o form1; estes forms não são herdados. Os parâmentros são variáveis(string, inteiro). Tem como fazer isso? Alguem poderia ajudar?
Delphi 2007
Obrigado.
GOSTEI 0
Alanporto
13/08/2009
Tenta fazer uma class function no Form2 passando um parâmetro e retornando outro. Mais ou menos assim:
uma dica é colocar o código de criação / abertura do Form2 nessa class function.
no Form1 vc chama a class function:
class function TForm2.FuncaoQualquer(variavel1: String; variavel2: Boolean):Integer; begin //....código interno..... Result := ModalResult; //só exemplo, pode ser retornado qualquer Inteiro. end;
uma dica é colocar o código de criação / abertura do Form2 nessa class function.
no Form1 vc chama a class function:
variavelInteger := TForm2.FuncaoQualquer(variavelString,variavelBooleana);
GOSTEI 0
Adriherbal
13/08/2009
Valeu pessoal pelas dicas, solucionei assim:
// Form2
private
FCodigo: String;
FNome: String;
procedure SetCodigo(const Value: String);
procedure SetNome(const Value: String);
{ Private declarations }
public
{ Public declarations }
function AbreForm(Parametro1: String): String;
property Codigo: String read FCodigo write SetCodigo;
property Nome: String read FNome write SetNome;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
function TForm2.AbreForm(Parametro1: String): String;
begin
if not Assigned(Form2) then
Application.CreateForm(TForm2, Form2);
Form2.FCodigo := Parametro1;
if Form2.ShowModal = mrOK then
begin
Result := ´Parametro 2 de Retorno OK´;
end;
end;
procedure TForm2.SetCodigo(const Value: String);
begin
FCodigo := Value;
end;
procedure TForm2.SetNome(const Value: String);
begin
FNome := Value;
end;
// Form1 chamo a rotina assim:
var
l_parametro2: String;
begin
inherited;
l_parametro2 := ´codigo de Envio OK!´;
l_parametro2 := Form2.AbreForm(l_parametro2);
end;
Não sei se é o melhor jeito mas pra mim funcionou.
// Form2
private
FCodigo: String;
FNome: String;
procedure SetCodigo(const Value: String);
procedure SetNome(const Value: String);
{ Private declarations }
public
{ Public declarations }
function AbreForm(Parametro1: String): String;
property Codigo: String read FCodigo write SetCodigo;
property Nome: String read FNome write SetNome;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
function TForm2.AbreForm(Parametro1: String): String;
begin
if not Assigned(Form2) then
Application.CreateForm(TForm2, Form2);
Form2.FCodigo := Parametro1;
if Form2.ShowModal = mrOK then
begin
Result := ´Parametro 2 de Retorno OK´;
end;
end;
procedure TForm2.SetCodigo(const Value: String);
begin
FCodigo := Value;
end;
procedure TForm2.SetNome(const Value: String);
begin
FNome := Value;
end;
// Form1 chamo a rotina assim:
var
l_parametro2: String;
begin
inherited;
l_parametro2 := ´codigo de Envio OK!´;
l_parametro2 := Form2.AbreForm(l_parametro2);
end;
Não sei se é o melhor jeito mas pra mim funcionou.
GOSTEI 0
Fausto.malheiros
13/08/2009
Isso no cobol era tão simples! Rs....
Então, estou tendo o mesmo problema. Preciso passar....por enquanto...2 parametros do Menu para todos os programas.
Nome do programa = O caption do menu Item
Nome do Usuario = atual usuario logado.
Ckamo os programas atravez da seguinte rotina:
Alguem tem alguma ideia menos complicada?
Então, estou tendo o mesmo problema. Preciso passar....por enquanto...2 parametros do Menu para todos os programas.
Nome do programa = O caption do menu Item
Nome do Usuario = atual usuario logado.
Ckamo os programas atravez da seguinte rotina:
try
Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario);
Formulario.ShowModal;
finally
FreeAndNil(Formulario);
end;
Alguem tem alguma ideia menos complicada?
GOSTEI 0
Firekiller_am
13/08/2009
Cria uma unit ou classes com as variaveis/property e pronto passa valor e pega de la.
abraços
abraços
GOSTEI 0