Newsgroup: it.comp.lang.delphi
Titolo: immagini in quickreport....

Ciao a tutti; ho una form con label e image vorrei riportre le stesse in un
quickreport per stamparle. Uso il seguente metodo:
procedure TForm2.stampClick(Sender: TObject);
var
y:integer;
i:integer;
begin
  for i:=0 to pred(componentcount) do
   if components[i] is tlabel then
    for y:=0 to pred(QuickReport1.ComponentCount) do
     if  QuickReport1.Components[y] is TQRlabel then
      if tlabel(components[i]).tag=tqrlabel(QuickReport1.components[y]).tag
then
tqrlabel(QuickReport1.Components[y]).caption:=tlabel(componens[i]).caption;
// se elimino questo pezzo seguente, mi trovo in preview tutte le label
perfettamente
 {
QuickReport1.QRImage1.Picture.Assign(img1.Picture);
 QuickReport1.QRImage2.Picture.Assign(img2.Picture);
 QuickReport1.QRImage3.Picture.Assign(img3.Picture);
 QuickReport1.QRImage4.Picture.Assign(img4.Picture);
 QuickReport1.QRImage5.Picture.Assign(img5.Picture);
 QuickReport1.QRImage6.Picture.Assign(img6.Picture);
 QuickReport1.QRImage7.Picture.Assign(img7.Picture);
 QuickReport1.QRImage8.Picture.Assign(img8.Picture);
 QuickReport1.QRImage9.Picture.Assign(img9.Picture);
 QuickReport1.QRImage10.Picture.Assign(img10.Picture);
}
// se inserisco il pezzo sopra   in preview mi esce lo schermo interamente
in bianco.
QuickReport1.Previewmodal;
 end;
Sapete perchč succede questo? Cioč perchč se non assegno le immagini e tutto
ok? Poi del resto capita pure che assegnando solo le immagini e non le label
vengono visualizzate solo alcune immagini ed altre niente. Grazie
anticipatamente a tutti coloro sapranno aiutarmi.

 tqrlabel(QuickReport1.Components[y]).caption:=tlabel(componens[i]).caption;
Ho provato il codice che hai postato e funziona perfettamente.
Ho messo tre TImage e tre TLabel in Form1, poi ho creato un nuovo report,
ho posizionato una TQrBand di tipo rbTitle ed vi ho posizionato tre
TQrImage e tre TQrLabel. Infine mi sono sincerato che il flag PrintIfEmpty
del report fosse settato a true (altrimenti stampa solo se c'è almeno un
dato nel Dataset collegato).
Sul Form1, ho aggiunto un bottone con il tuo codice:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, y: Integer;
begin
  for i:=0 to pred(componentcount) do
    if components[i] is tlabel then
      for y:=0 to pred(QuickReport2.ComponentCount) do
        if QuickReport2.Components[y] is TQRlabel then
          if tlabel(components[i]).tag =
             tqrlabel(QuickReport2.components[y]).tag 
          then
            tqrlabel(QuickReport2.Components[y]).caption := 
              tlabel(components[i]).caption;
    QuickReport2.QRImage1.Picture.Assign(Image1.Picture);
    QuickReport2.QRImage2.Picture.Assign(Image2.Picture);
    QuickReport2.QRImage3.Picture.Assign(Image3.Picture);
    QuickReport2.PreviewModal
end;
Il tutto va che è una meraviglia. Controlla quindi se per caso hai omesso
qualche passaggio, tipo posizionare i controlli TQRImage e TQRLabel
direttamente sul report e non dentro una band oppure avere impostato la
property PrintIfEmpty a False...
Se ti può servire, puoi effettuare il download dei sorgenti del mio test
(Delphi 7 pro) all'indirizzo
 
http://www.marcobortolani.it/icld/TImage.zip
(ho chiamato l'esempio TImage perchè... non so perchè... comunque è la
prova del report:-)).
Saluti
	Marco Bortolani
	info @ 
marcobortolani.it