Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: maxt - Giugno 26, 2013, 01:01:40 pm
-
scusate non riesco a capire come si fa per stampare su stampante un form come si vede a video
qualcosa del tipo form1.print
grazie
-
contrariamente a delphi su lazarus TForm.Print non c'e' , pero' non e' un gran perdita visto che su delphi le checkbox ed altri componenti non vengono stampati bene io su delphi avevo fatto questa procedura dovresti vedere se su lazarus funziona, io adesso non ho tempo per testarla, ciao Brunello
procedure PrntForm(fx: TForm);
var
phh, phw: Integer;
ph: HDC;
begin
try
printer.BeginDoc;
ph := printer.canvas.Handle;
phw := GetDeviceCaps(ph, PHYSICALWIDTH);
phh := Trunc((fx.ClientHeight * phw) / fx.ClientWidth);
StretchBlt(ph, 0, 0, phw, phh,
fx.Canvas.Handle, 0,0, fx.ClientWidth , fx.ClientHeight, SRCCopy);
finally
printer.EndDoc;
end;
end;
-
stavo provando a salvare l'immagine del form in un file
con questo codice:
var
BitMap : TBitMap;
begin
BitMap := TBitMap.Create;
BitMap := Form1.GetFormImage;
BitMap.SavetoFile('form.bmp');
per poi stamparlo
ma praticamente il file .bmp che crea e' un file completamente nero.. non capisco il perche'
-
Prova ad usare il codice che trovi in questo post (http://forum.lazarus.freepascal.org/index.php/topic,4211.msg19714.html#msg19714) per recuperare l'immagine bitmap del form
-
ok con quel codice riesce a salvare l'immagine
come mai escono immagini nere con il codice di sopra? (bug di lazarus?)
-
Probabilmente perchè non gli comunichi la dimensione della form. Almeno penso sia quello. Ma è solo una deduzione