Newsgroup: it.comp.lang.delphi
Titolo: Stampare il contenuto di una dbgrid

Salve a tutti.
Ho un database dtable in una dbgrid, come è possibile stamparne il
contenuto, ancora meglio se le colonne selezionate.
Grazie



in un dbgrid non so, ma molte griglie di terze parti hanno dei metodi 
SaveToFile, SaveToStream, SaveToHTML, SaveToXML, SaveToCSV e via dicendo, 
come per esempio TDbAdvStringGrid di TMS Software, free con sorgenti per uso 
personale, rintracciabile su 
http://www.tmssoftware.com/dbadvgrd.htm
 
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)

Rispondo a Fabio che scrisse: 

Con un bel for e l'oggetto TPrinter :-)
-- 
    { 
www.fimm.tk
 }
(* 
zrgny...@atv.vg
 *)
""" C isn't that hard: void (*(*f[])())() defines f as an array of unspecified size, 
of pointers to functions that return pointers to functions that return void."""

>Con un bel for e l'oggetto TPrinter :-)
Ti ringrazio anticipatamente per l'attenzione, ma essendo un principiante,
potresti postarmi qualche riga di codice esemplificativo?
Ciao.

 contenuto, ancora meglio se le colonne selezionate.
se Delphi in questo tempo non si è evoluto tanto, ancora dovrebbe essere
presente quel "giocattolo" di QuickReport.
Il QuickReport è un componente dedicato proprio alla stampa di tutto ciò che
riguarda i database.
Solo che se non l'hai mai visto e usato, non so quanto riesci a fare da
solo.
A dir la verità non è difficile stampare il contenuto di una DBGrid visto
che questa contiene i dati di una tabella, quindi tu essenzialmente
stamperai i dati della tabella che poi sono gli stessi visualizzati nella
DBGrid. Tutto questo utilizzando QuickReport.
Volendo potresti farti pure una tua procedura di stampa, ma per il momento
ti consiglio vivamente di lasciar stare. :-))
Ora cercherò di farti capire come devi fare con QuickReport.
Nel tuo progetto apri una nuova form.
Mettici il componente "QuickRep" che nella palette dei componenti sta in
QReport.
Ora nelle proprietà di QuickRep, devi settare il Dataset a cui farà
riferimento.
Però io non conosco il tuo progetto, spero che stai usando un DataModule
altrimenti non riesci a vedere Table1.
Insomma inventati qualcosa per riuscire a settare Table1 come Dataset.
Ora vai nella proprietà "Bands" e metti a True "HasDetails".
Fatto questo nella pagina del componente QuickRep che hai messo nella form,
comparirà una zona tratteggiata. Quì puoi metterci i componenti "QRDbText"
che collegarai tramite le loro proprietà al componente Table1 ed il campo
che vuoi stampare. Quindi con più componente QRDbText stampi tutti i campi
che vuoi.
La banda "HasDetails" permette di stampare tutti i record di quella tabella
a cui fa riferimento il Dataset di QuickRep1.
Quindi dalla form principale del programma, non ti resta che fare un
pulsante di stampa che lancia il Preview di QuickRep1.
Avvii il tuo programma e provi.
Volendo puoi provare anche a design time.
Ciò che ti ho detto, sempre se mi sono spiegato ( dubito in queste poche
righe ), ti permette di stampare tutti i record che vedi in DBGrid.
Ora se tu vuoi stampare solo le colonne selezionate, ti consiglio di fare un
passo alla volta.
Intanto stampa tutto, poi se riesci a farlo funzionare si trova  un sistema
per stampare quello che vuoi tu.
Ti saluto.

presente quel "giocattolo" di QuickReport.
Io ho delphi 7 e del quick report non c'è traccia, ho provato le routine che
misuggerisce l'help ma non mi funzionano. Esiste che tu sappia software di
terze parti che semplifichino la stampa?
Ciao.

su d7 quickreport è deprecated.
Lo puoi installare comunque dal cd. Cerca dettagli nelle waht's new.
Ti suggerisco comunque di usare Rave che difficilmente può funzionare 
peggio di quickreport.
A

Esiste un'altro Thread che pone la difficoltà di un'altro frequentante di
questo ng nel fare stampe proprio oggi.
Non avete la versione 6 Pro con quella i report sono cosa da nulla.
Ciao
Mario
e-mail:mari...@inwind.it
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ciao.
te lo dicevo che era un bel po' che non usavo Delphi.
Sono rimasto al 5. Vabbè, mi devo aggiornare un po' :-))
Una volta c'era e credo ci sia ancora, Report Builder ( se non sbaglio ) ma
non era incluso in Delphi, infatti bisognava acquistarlo a parte.
Comunque sia se vai su un sito di componenti per Delphi, tipo Torry,
troverai sicuramente utility per la stampa.
Può darsi che QuickReport sia stato eliminato da Delphi, visto che
onestamente lo sfigurava un bel po'.
Insomma un compilatore fantastico, un sacco di componenti utili e
funzionali, ma un componente di stampa che era un disastro !!
Mi sembra strano che non hanno incluso nessun componente di stampa. Boh.
In ogni caso ti consiglio di utilizzare un componente di stampa bello e
fatto perchè puoi anche selezionare la stampante da usare, insomma
appoggiarti con un click alle stampanti di Windows, selezionare proprietà
ecc ecc......ed avviare la stampa che desideri.
Ti saluto.

Su suggerimento di un altro frequentatore del newsgroup ho cercato nel cd di
installazione di delphi e ho trovato un readme che spiegava come installare
il quickreport.
Ho seguito le tue istruzioni (molto dettagliate e precise, tank!) e sono
riuscito a stampare.
Ciao

 ha scritto

meglio così.
Hai visto che non è difficile stampare una semplice tabella.
Il problema viene quando vuoi fare stampe particolari. Ricordo che certe
proprietà di componenti QuickReport erano un po' finte.
Quindi uno al limite si arrangia in qualche maniera e alla fine tira fuori
comunque la stampa che vuole, anche se con un componente si stampa migliore
sarebbe molto più semplice.
Ci sentiamo...ciao.

>Hai visto che non è difficile stampare una semplice tabella.
Dove trovo help per questo componente?
Sai se sia possibile stampare il contenuto dei campi dentro una griglia?
Ciao.

 Sai se sia possibile stampare il contenuto dei campi dentro una griglia?
come alternativa (da esplorare) potresti salvare la griglia su un file o 
uno stream HTML e poi stamparla da lě (o anche solo mostrare il preview in 
IE).
Questo semplice codice qui sotto č per salvare una griglia su un file XML 
(prova ad aggiungerlo al tuo componente), ma se conosci l'HTML č facile 
scriverne uno simile per salvare su un file HTML (tag <TABLE>, <TD>, 
<TR>).
procedure Txxx.SaveToXML(const FileName: string);
var
  i, j: Integer;
  f: TextFile;
  s: string;
begin
  Assignfile(f, filename);
  Rewrite(f);
  if IOResult <> 0 then
    raise Exception.Create('Cannot Create file '+ FileName);
  Writeln(f, '<?xml version="1.0" encoding="ISO-8859-1" ?>');
  Writeln(f, Format('<Cells><Count>%d</Count><Data>', [RowCount * 
ColCount]));
  for i:= 0 to Pred(RowCount) do
  begin
    Writeln(f, Format('<Row><Index>%d</Index><Data>', [i]));
    for j:= 0 to pred(ColCount) do
    begin
      Write(f, Format('<Col><Index>%d</Index><Data>', [j]));
      s:= StringReplace(Cells[j,i],'&', '$amp', [rfReplaceAll]);
      s:= StringReplace(s,'>', '&gt;', [rfReplaceAll]);
      s:= StringReplace(s,'<', '&lt;', [rfReplaceAll]);
      s:= StringReplace(s,'"', '&quot;', [rfReplaceAll]);
      Write(f, s, '</Data></Col>');
    end;
    Writeln(f, '</Data></Row>');
  end;
  Writeln(f, '</Data></Cells>');
  CloseFile(f);
end;


Grazie a tutti quelli che mi hanno risposto ho risolto con il Quickreport,
anche se non č il massimo va piů che bene!