Fórum Passagem Parametros Entre Formulários #455382

16/09/2013

0

Alguem saberia me dizer se é possível eu abrir um form passando um parâmetro para dentro dele?

Isso nem necessidade de utilizar variável global.

Obrigado!!!
Pirasol

Pirasol

Responder

Posts

16/09/2013

Marcos Oliveira

Você pode criar uma procedure, ou function dentro do form com algum parâmetro e depois dar o show ou showmodal, conforme exemplo abaixo:

// No form2:
procedure TForm2.AbrirForm(Parametro1, Parametro2, ParamentroN: String);
begin
     // Aqui você pode tratar os parâmetros ou salvá-los em variáveis.
     Form2.ShowModal;
end;

// No Form1, para chamar o form2 passando parâmetros:
Form2.AbrirForm('1','2','N');



Att,

Marcos
Responder

Gostei + 0

16/09/2013

Joel Rodrigues

Você também pode sobrescrever o constructor e criar uma sobrecarga que receba parâmetros.
Responder

Gostei + 0

16/09/2013

Rodrigo Cordeiro

Mais uma opção: Cria um método de classe que recebe os parâmetros que você precisa e nele você já instancia o form:

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
  private
    { Private declarations }
  public
    class function Execute(par1, par2 : String) : Boolean;
  end;

implementation

{$R *.dfm}

{ TForm2 }

class function TForm2.Execute(par1, par2 : String) : Boolean;
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(Application);
  Form2.Edit1.Text := par1;
  Form2.Edit2.Text := par2;
  Result := Form2.ShowModal = mrOK;
end;

//Chamada no Form1:
if TForm2.Execute('texto1', 'texto2') then ShowMessage('OK');


[]'s

Rodrigo Cordeiro - qmd
qmd@usercontrol.com.br
Responder

Gostei + 0

16/09/2013

Rodrigo Cordeiro

Mais uma opção: Cria um método de classe que recebe os parâmetros que você precisa e nele você já instancia o form:

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
  private
    { Private declarations }
  public
    class function Execute(par1, par2 : String) : Boolean;
  end;

implementation

{$R *.dfm}

{ TForm2 }

class function TForm2.Execute(par1, par2 : String) : Boolean;
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(Application);
  Form2.Edit1.Text := par1;
  Form2.Edit2.Text := par2;
  Result := Form2.ShowModal = mrOK;
  FreeAndNil(Form2);
end;

//Chamada no Form1:
if TForm2.Execute('texto1', 'texto2') then ShowMessage('OK');


[]'s

Rodrigo Cordeiro - qmd
qmd@usercontrol.com.br


Olha o vazamento de memória ai... no código eu esqueci de destruir e liberar a memória do form2! :)
Responder

Gostei + 0

17/09/2013

Pirasol

Deu certo, obrigado a todos!!!!
Responder

Gostei + 0

17/09/2013

Deivison Melo

Finalizando o tópico!
Responder

Gostei + 0

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

Aceitar