PDA

Ver la Versión Completa : Crear QRDbtext en tiempo de ejecucion


lbidi
13-09-2006, 22:21:06
Hola, amigos.

Como puedo crear estos componentes en el qrep??
Tengo varios reportes q utilizan el mismo dataset, pero varian los campos.
Mi interes es crearlos dentro del reporte, y asignarles los datafields y resto
de propiedades.

Gracias.
Saludos
Leonardo

lbidi
14-09-2006, 20:00:48
Amigos, a ver si me pueden sacar de este problema.
Estoy creando los QrDBTEXT, por codigo segun lo siguiente.


for i := 1 to 5 do begin
if aListas[i] > 0 then begin
With TQRDBText.Create( Self ) do
begin
DataSet := f_Parametros.QryDatos;
Name := lbPrecio' + IntToStr(aListas[i]);
DataField := 'Precio ' + IntToStr(aListas[i]);
Font.Height := 13;
Parent := Banda_Detalle;
Top := 1;
Left := nCol;
AutoSize := True;
Visible := True;
end;
end;
end;


me esta dando error en la linea cuando asigno el dataset.
el QryDatos esta en el form "parametros" el cual tengo en el use del
form de QR.
Me da un error de "violacion de acceso en la direccion....".
Alguna idea??
Gracias

Leonardo

lbidi
14-09-2006, 20:02:07
Me falto un comilla , pero ese no es el problema.
Gracias

lbidi
14-09-2006, 21:04:05
Problema resuelto. Habia q asignar el dataset del reporte en cuestion para
los qrdbtext.

Gracias.
Saludos

Ade
05-10-2006, 01:53:40
Hola donde pones ese codigo?
he leido que para crear componentes en tiempo de ejecucion hay q tener creado antes el quickrep con los tqrband, se pueden tener en modo diseño y despues crear en tiempo de ejecucion los TQRLabe y TQRExpr??
si es asi, como pongo el codigo? como un procedure?? y lo llamo directamente??

Saludos

lbidi
05-10-2006, 19:08:29
Hola, ade.
Si se puede, por lo menos a mi me deja :D.
Solo tengo creado el QR, y dos bandas, Titulo y Detalle.
Luego en el evento beforeprint asignas los QrDbtext y los QrLabels.
Aqui te dejo un ejemplo


With TQRLabel.Create( Self ) do
begin
Name := 'txPorc' + IntToStr(aListas[i]);
AutoSize := True;
Font.Style := [fsBold];
Height := 17;
Left := nCol;
Top := 32;
Caption := ' % ' + IntToStr(aListas[i]);
Parent := Banda_Titulo;
end;
With TQRDBText.Create( Self ) do
begin
DataSet := Rep_Margenes.DataSet;
Name := 'lbPorc' + IntToStr(aListas[i]);
DataField := ' % ' + IntToStr(aListas[i]);
Mask := '.0,0';
Alignment := taRightJustify;
Font.Name := 'Arial';
Font.Height := -11;
Font.Size := 8;
Parent := Banda_Detalle;
Top := 1;
Left := nCol;
AutoSize := True;
end;


Suerte y saludos.

Ade
06-10-2006, 00:37:54
gracias Ibidi, mañana pruebo y aviso, pensaba q beforeprint era despues de imprimir :confused:

Ade
07-10-2006, 20:17:04
Gracias Ibidi nuevamente, eso me funciona ya, solo que las etiquetas se solapan, unas a las otras, solo se ve completa la ultima.
En este hilo se comenta los mismo y he de conocer en pixeles el tamaño del campo, cosa que no se hacer, sabesis alguno??
tuviste este problema??

http://www.clubdelphi.com/foros/showthread.php?p=161169#post161169

Saludos

Lepe
07-10-2006, 21:31:55
¿Has visto las posiblidades del qrCreateList (http://www.clubdelphi.com/foros/showthread.php?t=18282&highlight=qrCreatelist)?

Saludos