Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: maxt - Giugno 26, 2013, 01:01:40 pm

Titolo: stampare form
Inserito 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
Titolo: Re:stampare form
Inserito da: brunello - Giugno 26, 2013, 06:01:24 pm
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;
Titolo: Re:stampare form
Inserito da: maxt - Giugno 28, 2013, 10:25:56 am
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'
Titolo: Re:stampare form
Inserito da: El Salvador - Giugno 28, 2013, 12:08:19 pm
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
Titolo: Re:stampare form
Inserito da: maxt - Giugno 28, 2013, 05:39:38 pm
ok con quel codice riesce a salvare l'immagine

come mai escono immagini nere con il codice di sopra? (bug di lazarus?)
Titolo: Re:stampare form
Inserito da: xinyiman - Giugno 29, 2013, 07:42:52 pm
Probabilmente perchè non gli comunichi la dimensione della form. Almeno penso sia quello. Ma è solo una deduzione