Formulário recebendo parâmetros

Delphi

03/10/2006

Olá pessoal...

Estou com o seguinte problema.

Preciso chamar um formulário passando parâmetros para ele, tipo:
Form1.Create(´Gardel´);
Form1.Show;

Bom o que eu entendo sobre isso é que eu deveria colocar esses parâmetros no construtor, isso eu faria facil no C# mais aqui no delphi to tendo dificuldades.

Atualmente to criando um formulario assim:

Application.CreateForm(TForm1, Form1);
Form1.Show;

Alguém poderia me ajudar?

Aproveitando o espaço esse parâmetro que eu gostaria de passar é um array de elementos indefinidos tem como alguém exemplificar como faz isso no delphi?

Agradeço desde já,

Atá mais.


Gardel

Gardel

Curtidas 0

Respostas

Fabianosales

Fabianosales

03/10/2006

Olá Gardel, pelo que entendi, você quer passar um array dinâmico capaz de armazenar tipos de dados variáveis para o construtor de uma classe descendente de TForm, né?
Bom, você pode fazer isso assim:

[b:2c915f9f59]1º Declaração dos tipo[/b:2c915f9f59]

//Declaração do nosso tipo de array de conteúdo variável
type
  TVariantArray = array of Variant;

//declaração do nosso formulário "TMyFormClass" descendente de "TForm"
type
  TMyFormClass = class(TForm)
  private
  public
    //o construtor padrão da classe
    constructor Create(AOwner: TComponent); overload;
    //construtor sobrecarregado...
    constructor Create(AOwner: TComponent;  AParams: TVariantArray = nil); overload;
  end;


[b:2c915f9f59]2º - Implementação dos construtores...[/b:2c915f9f59]

//construtor original 
constructor TMyFormClass.Create(AOwner: TComponent);
begin
   inherited Create(AOwner);
end;

//construtor sobrecarregado com nosso parâmetro
constructor TMyFormClass.Create(AOwner: TComponent;
  AParams: TVariantArray);
var
  i : integer;
begin
   //instancia o formulário pelo método padrão
   inherited Create(AOwner);
   
   //realiza o processamento dos elementos do array APArams   
   for i:=Low(AParams) to High(AParams) do
     begin
       //só a título de demonstração, 
       //vamos exibir o valor de cada elemento do array AParams
       ShowMessage(Format(´Parâmetro ¬d = "¬s"´, [i, AParams[i]]));
     end;
end;



Ok. Agora podemos ciar nossos formulários passando parâmetros pro seu construtor


var
  f : TMyFormClass;
  p : TVariantArray;
begin
  SetLength(p,3);
  p[0] := 65456;         //um valor inteiro...
  p[1] := ´Parâmetro 2´; //um valor string...
  p[2] := 35.00;         //um valor real...
  f:= TMyFormClass.Create(Self, p);
  f.Show;


Acho que isso deve resolver sua questão.
Espero ter ajudado.

Evoé...


GOSTEI 0
Gardel

Gardel

03/10/2006

Puxa...

É exatamente isso...

Muito obrigado.

Até mais


GOSTEI 0
POSTAR