PDA

Ver la Versión Completa : QReport y Componente ListBox


charlie663
04-10-2006, 00:08:47
Buenas a todos:

Tengo un componente QReport en donde quiero mostrar todos los datos de una factura de un bar (nº unidades, descripcion y precio). El problema es que veo que QReport se usa sobre todo para bases de datos y yo tengo en 3 ListBox, (uno de unidades, otro descripcion y el de precio unitario), los datos que tengo q ingresar en el QReport en 3 columnas con los mismos nombres.

Mi duda es: ¿Cómo puedo volcar los datos de un ListBox a un QReport?.
Estoy aprendiendo en el tema asi que si me lo podéis detallar perfectamente os lo agradecería mucho.

Un saludo a todos:)

Caral
04-10-2006, 00:50:54
Hola
De poder se puede, creo, ya que el listbox se ve en general como Items, cada Item es una linea, lo puedes mostrar en el qreport en un qrlabel, en un Qrtext y asi ver por item lo que necesitas, especificando la linea o Item que vas a imprimir en este caso.
La pregunta es porque un listbox ?, es mera curiosidad.
Saludos

charlie663
04-10-2006, 01:34:15
Porque para el programa que estoy diseñando no trabajo con bases de datos, y es una tontería crear una base de datos por cada ticket que genero, simplemente paso del contenido del listbox al qreport y listo.

Y respecto al tema que me has comentado hago lo siguiente:

QRDBText->Lines->AddStrings(ListBox->Items), de tal manera que lleno todos los items del listbox en las lineas del qrdbText, pero a la hora de imprimir, no me imprime el contenido de este y no se por qué :(

Héctor Randolph
04-10-2006, 02:09:22
Hola charlie663!

Busca en las demos que vienen con Delphi para QuickReport, existe una que puede servirte en donde se hace uso del evento OnNeedData:


procedure TfrmNeedData.FormCreate(Sender: TObject);
var
i: integer;
begin
SomeList := TStringlist.Create;

for i := 0 to 500 do
SomeList.Add('Line ' + IntToStr(i));
end;

procedure TfrmNeedData.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
// You must reset your data in the BeforePrint event
// or when you print from the preview, the report will
// start with the last value(s)
CurrentIndex := 0;
end;

procedure TfrmNeedData.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
// If MoreData is true, then QuickReport will print
// another detail band. When you set it to false,
// the report is done.

MoreData := (CurrentIndex < SomeList.Count);

if MoreData then
begin
QRLabel1.Caption := SomeList[CurrentIndex];

// Here's how to set the progress bar
QuickRep1.QRPrinter.Progress := (Longint(CurrentIndex) * 100) div SomeList.Count;
end
else
QuickRep1.QRPrinter.Progress := 100;

Inc(CurrentIndex);
end;


Saludos