Fórum Passar parametro em tempo de execução. #286992

05/07/2005

0

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

Responder

Posts

05/07/2005

Paulo_amorim

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é+


Responder

Gostei + 0

05/07/2005

Ivonei

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:


Responder

Gostei + 0

05/07/2005

Sremulador

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


Responder

Gostei + 0

05/07/2005

Ivonei

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;



Responder

Gostei + 0

05/07/2005

Paulo_amorim

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é+


Responder

Gostei + 0

06/07/2005

Ivonei

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


Responder

Gostei + 0

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

Aceitar