Fórum Passar Parâmetro para um form e retornar outro #373511

13/08/2009

0

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

Responder

Posts

13/08/2009

Osocram

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.



Responder

Gostei + 0

13/08/2009

Alanporto

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



Responder

Gostei + 0

13/08/2009

Adriherbal

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.


Responder

Gostei + 0

21/08/2009

Fausto.malheiros

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?


Responder

Gostei + 0

23/08/2009

Firekiller_am

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

abraços


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar