Newsgroup: it.comp.lang.delphi
Titolo: Help componente Vtk PReport

Ciao, scusate se invado il ng per faccende "private".
Ho scaricato il componente PReport, come suggeritmi da Jax, ma non 
riesco a capire come funziona con i dati virtuali.
Ho messo in una form un TPrReport e un TPrStringsDataset collegato ad un 
TListBox (in cui ho messo qualche stringa). Poi ho creato un template in 
cui ho una stringa collegata con il mio TPrStringsDataset (Prova: 
[PrStringsDataset1.LineNo(0)]).
A questo punto però, eseguendo, mi restituisce un errore di "DataSet[] 
not found". E me lo restituisce in qualsiasi situazione (ho provato 
anche con altri componenti del tool).
Come devo fare? Lavora anche senza database, vero?!
Grazie. Fabio

 riesco a capire come funziona con i dati virtuali.
Eccomi!
Questo è uno spezzone di un mio programma che mette in un report una
listview, non è il massimo ma si dovrebbe capire... se così non fosse,
dimmelo pure.
// ho dovuto tenere una variabile globale come una specie di record
// indicator, praticamente un indice virtuale che uso per leggere
// l'n-esimo item della listview
var
    iIndex: Integer;
procedure TForm1.prEventsDataset1GetFieldsList(prDataset: TprDataset;
  L: TStrings);
begin
// in questo evento aggiungi i campi del database virtuale
  L.Clear;
  L.Add('nome');
  L.Add('prezzo');
  L.Add('marca');
end;
procedure TForm1.prEventsDataset1GetFieldValue(prDataset: TprDataset;
  const FieldName: String; var FieldValue: Variant);
begin
// qui vengono reperiti i valori dei campi per il record corrente
  if FieldName = 'nome' then FieldValue := ListView2.Items[iIndex].Caption
  else if FieldName = 'prezzo' then FieldValue :=
ListView2.Items[iIndex].SubItems[0]
  else if FieldName = 'marca' then FieldValue :=
ListView2.Items[iIndex].SubItems[1]
end;
procedure TForm1.prEventsDataset1Eof(prDataset: TprDataset;
  var IsEof: Boolean);
begin
// il report chiede se sono finiti i record, io lo gestisco in questo modo:
// se l'indice a cui sono arrivato è uguale al numero di record
// la cosa interessante è che richiamando la proprietà RecordCount
// si va a scatenare l'evento RecordCount che c'è più in basso
// nel mio caso se EOF, calcolo i totali e li metto nelle variabili del
report
  IsEof := iIndex = prDataSet.RecordCount;
  if IsEof then
  begin
    prReport1.Variables.ByName['Totale'].AsString := Label2.Caption;
    prReport1.Variables.ByName['nome_preventivo'].AsString :=
StaticText2.Caption;
  end;
end;
procedure TForm1.prEventsDataset1Next(prDataset: TprDataset);
begin
// Semplicemente se il dataset viruale fa un Next, io incremento l'Index
// in modo che alla prossima lettura venga letto il prossimo item
  Inc(iIndex);
  if ListView2.Items[iIndex] <> nil then
  begin
// questo l'ho messo per mia comodità; in pratica se la listview contiene
// checkbox, se un item non è checcato, lo salta!
    if not ListView2.Items[iIndex].Checked then prEventsDataset1.Next;
  end;
end;
procedure TForm1.prEventsDataset1Prior(prDataset: TprDataset);
begin
// stessa cosa, anche se in effetti al report non servirebbe
// tornare indietro...
  Dec(iIndex);
  if ListView2.Items[iIndex] <> nil then
  begin
    if not ListView2.Items[iIndex].Checked then prEventsDataset1.Prior;
  end;
end;
procedure TForm1.prEventsDataset1First(prDataset: TprDataset);
begin
// si spiega da solo
  iIndex := 0;
end;
procedure TForm1.prEventsDataset1Open(prDataset: TprDataset);
begin
  iIndex := 0;
end;
procedure TForm1.prEventsDataset1RecordCount(prDataset: TprDataset;
  var RecordCount: Integer);
begin
// quando viene richiesto il numero di record, restituisce il numero
// di item nella listview
  RecordCount := ListView2.Items.Count;
end;
--
Jax
====
La conoscenza, signore, dovrebbe essere concessa gratuitamente a tutti!
(Harry Mudd)

Ciao,
ti ringrazio molto per la pazienza...però mi continua a dare l'errore di 
"Dataset[] not found". Evidentemente sbaglio o non faccio un altro 
passaggio, oltre a questi (a me sconosciuti) che mi hai indicato.
So che non è una cosa abituale, ma potresti darmi il tuo indirizzo mail 
(con quello che compare qui non ho avuto fortuna), così magari ti mando 
i files (4 Kb zipped)e mi dici dove sbaglio?!
Scusami dell'insistenza, ma la scadenza incombe minacciosa.
Fabio


 ti mando i files (4 Kb zipped)e mi dici dove sbaglio?!
Manda pure a garetjax76 [chiocciola] yahoo [punto] it
Ah, quota, per piacere...
http://www.marco5x.net/usenet/quoting-3.php
--
Jax
====
Dove c'č molta luce, l'ombra č piů nera. (Goethe)

 passaggio, oltre a questi (a me sconosciuti) che mi hai indicato.
Il componente prEventsDataset non devi crearlo tu manualmente, ma è un
componente vero e proprio della palette PReport (dovrebbe essere la 5a
icona).
Quindi cancella la tua dichiarazione e inserisci un prEventsDataset e
collega i suoi eventi a quelli che hai già scritto.
--
Jax
====
Se tu pagare come dici tu, io lavorare come dico io. Se tu pagare come
dico io, io lavorare come dici tu. (antico proverbio cinese)