Passar parametro em tempo de execução.

Delphi

05/07/2005

Olá

Tenho uma consulta que mostra o movimento dos meses escolhidos.
Meu problema é que tenho que imprimir esta consulta e não sei como chamar o RLDBtext correto (uso Fortes Report) para preencher a propriedade DataField com a coluna correspondente (criado em tempo de execução). :?

Seria algo assim:
[color=green:cd01716203]
Var
i, qtde_meses:Integer;
begin
  qtde_meses:=5
  for i:=1 to qtde_meses do 
  begin 
    RLDBText +(i).DataField:= ´Mes´+(i);
  end;
  RLReport.Preview;
end;
[/color:cd01716203]

Agradeço qualquer dica.


Ivonei

Ivonei

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

05/07/2005

Olá

Só pra ficar claro... vc tem componentes RLDBText com nomes sequenciais?
RLDBText1, RLDBText2, RLDBText3, etc?

Se sim, é necessário usar findcomponent para acessar seus componentes atraves de seu nome:
TRLDBText( FindComponent(´RLDBText´ + IntToStr(i) ) ).DataField := ´Mes´ + IntToStr(i);


Se não eh isso, me desculpe, tente postar denovo

Espero que ajude
Até+


GOSTEI 0
Ivonei

Ivonei

05/07/2005

Olá Só pra ficar claro... vc tem componentes RLDBText com nomes sequenciais? RLDBText1, RLDBText2, RLDBText3, etc? Se sim, é necessário usar findcomponent para acessar seus componentes atraves de seu nome:
TRLDBText( FindComponent(´RLDBText´ + IntToStr(i) ) ).DataField := ´Mes´ + IntToStr(i);
Se não eh isso, me desculpe, tente postar denovo Espero que ajude Até+


É deste jeito mesmo que quero fazer.
Só que os componentes estão em outro form. Tentei fazer assim:

TRLDBText( FindComponent(´[b:8cc0ee9e24]Form2.[/b:8cc0ee9e24]RLDBText´ + IntToStr(i) ) ).DataField := ´Mes´ + IntToStr(i);

Mas dá erro ´Access Violation´.
O que está errado?
Não consigo descobrir o motivo. :cry:


GOSTEI 0
Sremulador

Sremulador

05/07/2005

achou que você não criou o formulário.


GOSTEI 0
Ivonei

Ivonei

05/07/2005

achou que você não criou o formulário.


Está criado sim. Pois se eu fizer como está abaixo, da certo:

Var 
i, qtde_meses:Integer; 
begin 
  qtde_meses:=1 
  for i:=1 to qtde_meses do 
  begin 
    Form2.RLDBText1.DataField:= ´Mes´+(i); 
  end; 
  Form2.RLReport.Preview; 
end;



GOSTEI 0
Paulo_amorim

Paulo_amorim

05/07/2005

Olá

O FindComponent é um método de Self, nesse caso. POr isso vc não especifica a raiz.
Como os componentes estão em outro formulário, deve-se fazer

Form2.FindComponent( ... )

Claro, assumindo que Form2 está na memória

Espero que ajude
Até+


GOSTEI 0
Ivonei

Ivonei

05/07/2005

Olá O FindComponent é um método de Self, nesse caso. POr isso vc não especifica a raiz. Como os componentes estão em outro formulário, deve-se fazer
Form2.FindComponent( ... )
Claro, assumindo que Form2 está na memória Espero que ajude Até+


Ajudou muito.
Agora está funcionando do jeito que eu preciso.
Valeu Paulo Amorim. :D


GOSTEI 0
POSTAR