Saludos amigos, estoy intentando acoplar una rutina de impresion a los documentos de mi sistema de Control Documentario, al presionar el boton Imprimir aparece una ventana donde el usuario fija los margenes en cm y el numero de copias, luego finalmente un boton Listo con el siguiente codigo:
Código Delphi
[-]procedure TForm5.PrintRichEdit(Rich: TRxRichEdit; LMargin, RMargin, TMargin, BMargin: real;
Copies: integer; JobTitle: string);
var
Loff, TOff, ROff, BOff : integer;
XRes, YRes, XOffs, YOffs : integer;
R: TRect;
begin
LOff := Trunc(StrToFloat(txtMIzq.Text)*10);
TOff := Trunc(StrToFloat(txtMSup.Text)*10);
ROff := Trunc(StrToFloat(txtMDer.Text)*10);
BOff := Trunc(StrToFloat(txtMInf.Text)*10);
XOffs := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX );
YOffs := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY );
XRes := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
YRes := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
LOff := Round(LOff*XRes/25.4)-XOffs;
TOff := Round(TOff*YRes/25.4)-YOffs;
ROff := 2490-Round(ROff*XRes/25.4)-XOffs;
BOff := 3510-Round(BOff*YRes/25.4)-YOffs;
Rich.PageRect := Rect( LOff, TOff, ROff, BOff );
while Copies > 0 do begin
Application.ProcessMessages;
Rich.Print(JobTitle);
Dec(Copies);
end;
end;
El evento click del boton que llama a la funcion anterior es:
Código Delphi
[-]procedure TForm5.Button1Click(Sender: TObject);
begin
PrintRichEdit(form2.docView, StrToFloat(txtMIzq.Text), StrToFloat(txtMDer.Text), StrToFloat(txtMSup.Text), StrToFloat(txtMInf.Text), cboNumCopias.Value, form2.DBMemo1.Text);
end;
La idea es imprimir solo documentos de 1 pagina en formato A4, pero esta rutina me imprime pequeñas pociones del documento, y las saca en 4 paginas, al parecer los margenes no cuadran, requiero de su ayuda amigos para ver este caso.
Gracias
Americo