Passar parametros para um form

03/09/2004

Gostaria de passar parametro para um form (não é possivel que não consiga fazer isso no Delphi!). Já notei que tem várias ocasiões que, passando parametros pro form, melhoraria significativamente os meus sistemas). Exemplo: Tenho um sistema que possui varios graficos (frmGraficoVendasPeriodo,frmGraficoVendasVendedor, etc) e um form frmPersonalizaGrafico (que por sua vez, muda as caracteristicas do grafico, como cor, estilo, etc). O problema é que dentro do frmPersonalizaGrafico tenho que ficar testando qual foi o form que o chamou para mudar o dbchart desse form:

if frmPersonalizaGrafico.Tag = 0 then
frmGraficoVendasPeriodo.DBChart1.series ..... (faz algo)
else if frmPersonalizaGrafico.Tag = 1 then
frmGraficoVendasVendedor.DBChart1.series ..... (faz algo)

Ou seja, é justamente esses IFs que eu queria elimiar. Simplesmente eu passaria como parametro para esse form o dbchart do form de origem e o form se vira para configurar o dbchart passado como parametro.
Se vc souber como fazer isso, eu agradeceria muito se vc me mandasse uma resposta. Grato pela sua atenção!!!


Andremelim

Respostas

03/09/2004

Ipc$

Ao invés de colocar o Tag em 0, 1, ...
Coloque o DBChart nele:
fmPersonaliza.Tag := Integer(DBChartx);
No lugar dos Ifs vc utiliza:
TDBChart(fmPersonaliza.Tag).series....faz algo


Responder Citar

03/09/2004

Paulo_amorim

Olá

Pode-se fazer o form receber um parâmetro no Create dele:

constructor Create( Owner: TComponent; MeuParametro: MeuTipo); reintroduce; overload;


Daí nesse caso você ahcma com o parametro adequado

Espero que ajude
Até+


Responder Citar

03/09/2004

Andremelim

Olá Paulo,

Em primeiro lugar gostaria de te agradecer pela sua ajuda. Se nao for te pedir muito gostaria que vc mandasse em pequeno exemplo (código do form no qual vc introduz esse trecho de código que vc mencionou). Eu estou em dúvida de como colocar isso no form. Grato.


Responder Citar

03/09/2004

Paulo_amorim

Olá

Eu não compilei pra ver pois tava sem Delphi, mas deve funcionar. Caso não,poste aqui que a gente ajuda, OK? :D

Claro, coloque as outras procedures como adequado

unit Form1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;

type
  TForm1 = class(TForm)

    { estou supondo que teu parametro eh TDBChart, vc põe o que voce quiser }
    constructor Create(AOwner: TComponent; Grafico: TDBChart); reintroduce;

  private
    { Private declarations }
    MeuGrafico: TDBChart;
  public
    { Public declarations }
  end;

implementation

{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent; MeuForm: TForm);
begin
     inherited Create (AOwner);
     { Vc deve setar esse parâmetro Grafico a uma variável para usar na Unit inteira.
     MeuGrafico := Grafico;
end;
end.


Até+


Responder Citar