Passagem Parametros Entre Formulários
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!!!
Isso nem necessidade de utilizar variável global.
Obrigado!!!
Pirasol
Curtidas 0
Respostas
Marcos Oliveira
16/09/2013
Você pode criar uma procedure, ou function dentro do form com algum parâmetro e depois dar o show ou showmodal, conforme exemplo abaixo:
Att,
Marcos
// 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
GOSTEI 0
Joel Rodrigues
16/09/2013
Você também pode sobrescrever o constructor e criar uma sobrecarga que receba parâmetros.
GOSTEI 0
Rodrigo Cordeiro
16/09/2013
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:
[]'s
Rodrigo Cordeiro - qmd
qmd@usercontrol.com.br
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
GOSTEI 0
Rodrigo Cordeiro
16/09/2013
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:
[]'s
Rodrigo Cordeiro - qmd
qmd@usercontrol.com.br
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! :)
GOSTEI 0
Pirasol
16/09/2013
Deu certo, obrigado a todos!!!!
GOSTEI 0
Deivison Melo
16/09/2013
Finalizando o tópico!
GOSTEI 0