Passar Parâmetro para um form e retornar outro

Delphi

13/08/2009

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.


Adriherbal

Adriherbal

Curtidas 0

Respostas

Osocram

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;
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

Alanporto

13/08/2009

Tenta fazer uma class function no Form2 passando um parâmetro e retornando outro. Mais ou menos assim:

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

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.


GOSTEI 0
Fausto.malheiros

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:

try Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario); Formulario.ShowModal; finally FreeAndNil(Formulario); end;


Alguem tem alguma ideia menos complicada?


GOSTEI 0
Firekiller_am

Firekiller_am

13/08/2009

Cria uma unit ou classes com as variaveis/property e pronto passa valor e pega de la.

abraços


GOSTEI 0
POSTAR