![]() |
Informe de QuickReport en Ejecucion
Estoy creando un informe de QuickReport 3.0.9 en Ejecucion en el cual voy introduciendo los campos que me convienen en cada momento con TQRDBText en un TQRBand-Detail y el titulo del campo con un TQRLabel en un TQRBand-Column Header . El problema es que solo veo el titulo del informe pero no aparecen ni los titulos de los campos ni el contenido.
El codigo seria algo asi: begin columnas := Grid.Columns.Count; SetLength(Etiquetas, columnas); SetLength(Campos, columnas); For ite := 0 to columnas - 1 do begin Etiquetas[ite] := TQRLabel.Create(Q2Cap); Campos[ite] := TQRDBText.Create(Q2Detalle); //Etiquetas Etiquetas[ite] := QRLabel1; Etiquetas[ite].Caption := Grid.Columns[ite].Title.Caption; Etiquetas[ite].Width := Grid.Columns[ite].Field.DataSize; //Etiquetas[ite].Top := QRLabel1.Top; Etiquetas[ite].Transparent := false; //Etiquetas[ite].Enabled := True; //Etiquetas[ite].Frame := QRLabel1.Frame; //Etiquetas[ite].Height := QRLabel1.Height; //Etiquetas[ite].Font := QRLabel1.Font; //Etiquetas[ite].Size := QRLabel1.Size; If ite > 0 then Etiquetas[ite].Left := Etiquetas[ite-1].Left + Etiquetas[ite-1].Width + 20 else Etiquetas[ite].Left := 0; //Campos Campos[ite] := QRDBText1; Campos[ite].DataSet := DM.QInforme; Campos[ite].DataField := DM.QInforme.FieldList.Fields[ite].FieldName; Campos[ite].Width := Etiquetas[ite].Width; //Campos[ite].Top := 0; Campos[ite].Left := Etiquetas[ite].Left; Campos[ite].Visible := true; Campos[ite].Transparent := False; end; DM.QInforme.Active:=True; end; ¿Sabeis que falta o donde esta el error? Gracias |
¿Esta Abierto el dataset?? Si es un query, ¿Devuelve algo? Lo que te sale es debido a que el dataset no contiene nada..
|
Veo 2 errores:
O sea, primero en etiquetas[ite] creas un qrlabel, y después dices etiquetas[ite]:= qrlabel1... pues te acabas de cargar la etiqueta que creaste antes. Bueno en realidad no, la etiqueta que creaste al principio, se quedará en memoria, pero no podrás acceder a ella para asignarle las propiedades. cuando a continuación haces: realmente estas cambiando las propiedades al QRLabel1 no al que creaste anteriormente!!!. Por otra parte no veo que asignes el Parent de los controles que creas en ejecución, así que no aparecen jamás en la banda detalle. Busca por el foro, hay mucho código sobre eso. Saludos |
Gracias por las rapidas respuestas. Aunque os comento:
El dataset esta abierto y contiene varios registros. Lo visualizo antes en un DBGrid.
Tienes razon, pero fue la ultima prueba que hice, realmente el codigo era sin la ultima linea, pero probe eso simplemente para comprobar que al menos visualizaba algo en ese QRLabel ya creado en vista diseño. En cuanto al parent, ¿No se lo estoy asignando en el create? TQRLabel.Create(Q2Cap)Mirare en los foros aunque la verdad es que no encontre nada que me ayudara. Gracias de nuevo. |
No. Lo que asignas es el AOwner (quien destruirá el componente), pero no dices donde se ha de situar ese qrLabel (sobre el Quickreport, sobre la banda cabecera, sobre la banda detalle....).
Saludos |
:o Jojo, ahora si. Que burro. Convencido que era el parent lo que le asignaba en el creador. Perfecto, millones de gracias a todos.
Seguimos por aqui. |
1 Archivos Adjunto(s)
Te paso un código que escribí con inestimable colaboración del foro.
Genera cualquier reporte con la llamada a la función generarlistado. El origen de los datos es una query , cualquiera. Para utilizarlo, descomprime los archivos y añadelos a tu proyecto. Desde donde quieras imprimir llama a la función con los parametros requeridos. Espero que te sea de ayuda. Un saludo |
Ok, probare tu solucion aunque ya me funciona. Gracias.
|
| La franja horaria es GMT +2. Ahora son las 13:54:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi