Newsgroup: it.comp.lang.delphi
Titolo: Domand[one?]

> Perchè su un'HP Photosmart P 1000 funziona e su un OKI OL 600ex no?
Cosa significa "non funziona"?
AV?
Non esce niente?
Hai l'iimaginde deformata?
Non escono i colori?
Non escono i toni di grigio?
La stampante si inkazza e va in errore?
Bye
AS

 > Perchč su un'HP Photosmart P 1000 funziona e su un OKI OL 600ex no?


 grigio (il toner non č finito...)
Le 2 stampanti sono entrambe locali, entrambe di rete o cosa?
Hai provato a stampare immagini da un programma diverso dalla tua app su
entrambe?
Hai provato a eslcudere la stampa della immagine mettendo solo una texout?
Bye
AS

 ha scritto nel messaggio
news:acaqjh$1rbq$1...@newsreader1.mclink.it...


> canvas.Draw(100,100,bmp);
allora prova a controllare le due chiamate di scalex e scaley..
e' possibile che l'errore sia li. Prova a controllare a runtime che valore
prende il rettangolo rr dopo l'assegnamento.

 canvas.Draw(100,100,bmp);
Non è che va in eccezione?
Hai messo stop on delphi exception nelle opzioni di debug?
Bye
AS

Scusatemi se il messaggio è un po lungo, ma mi sembra una cosa assurda
Ora io ho effettuato tutte le prove che mi avete gentilmente consigliato ma
il problema è rimasto quindi ho provato a fare in un'altro modo partendo da
0.
Quello che segue è esattamente il testo del programma che ho appena scritto.
Ora: in teoria il programma dovrebbe stampare 2 pagine: una con scritto
prova (la prima) e la seconda con l'immagine (tabe.bmp) giusto?
Se uso la stampante OKI mi stampa la parola Prova nella prima pagina e la
seconda la lascia bianca.
Se uso la stampante HP mi lascia bianca la prima pagina e mi stampa
l'immagine.....
Ora io vorrei chiedervi: butto il computer e non ci penso più o cosa posso
fare?
Il problema può essere dato dalla differenza di collegamento delle 2
stampanti? L'oki è laser tramite LPT1 mentre HP è getto d'inchiostro tramite
USB
Ditemi voi cosa posso fare!!!! Aiuto!!!! SOS!!!! Chi riesce a farmi fare sta
stampa giuro che gli invio i soldi per una pizza.....
procedure TForm1.Button1Click(Sender: TObject);
var bmp:tbitmap;
begin
    bmp:=tbitmap.create;
    bmp.LoadFromFile('c:\windows\desktop\tabe.bmp');
    image1.picture.Graphic:=bmp;
    IMAGE1.AutoSize:=TRUE;
    printer.BeginDoc;
    printer.Canvas.Draw(10,10,image1.Picture.graphic);
    printer.EndDoc;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
    printer.BeginDoc;
    PRINTER.CANVAS.TextOut(500,500,'Prova');
    printer.EndDoc;
end;
end.

 e ho trovato ciò che fa per me.
Ho visto che usi stretchdraw().
Dava problemi anche a me.
Da piangere, rischiavo di perdere alcuni clienti perchè sulle laserjet 
stampava pagine completamente nere. Investigando ho scoperto che era un 
problema di allocazione di memoria (fra heap di Delphi e di altre cose).
Il bello è che con altre stampanti era tutto a posto, esempio con 
Acrobat PDF e Distiller con cui faccio le prove (per non sprecare 
inchiostro sulla ink jet)... !!!
Ho risolto così (il codice è stato preso di brutto, quindi cerca di 
metterci quel che manca e nel giusto contesto). BackGround è una TImage 
che viene usata come sfondo e su cui poi si stampano altre cose...
Alla fine della fiera, nonostante i controlli, in realtà non va mai in 
errore...
   // stampa bitmap
   for ii := 3 downto 0 do try      // 3 retry bastano?
     Application.ProcessMessages;
     if StretchBlt (                // al posto di stretchdraw
           Printer.Canvas.Handle,
           0,
           0,
           xx,
           yy,
           BackGround.Canvas.Handle,
           0,
           0,
           BackGround.Width,
           BackGround.Height,
           SRCCOPY
           ) then break;             // B R E A K <<<------
     MostraErroreGDI ( 'Errore stampa immagine, riprovo :' );
     Application.ProcessMessages;
     Sleep ( 300 );
   except
     Printer.Abort;
     exit;
   end;
Dimenticavo: D4.
Ciao.
Mimmo.