Ir para conteúdo
Fórum Script Brasil
  • 0

Usando o PageSetupDialog para imprimir um RichEdit


Jhonas

Pergunta

Usando o PageSetupDialog1 para definir as margens do RichEdit para impressão

uses Printers;

(* Setar as margens do RichEdit em Polegadas (1 polegada = 2.54 cm)
    para a impressora ativa *)
procedure SetRichEditMargins(
   const mLeft, mRight,
         mTop, mBottom: extended;
   const re : TRichEdit);
var
   ppiX, ppiY : integer;
   spaceLeft, spaceTop : integer;
   r : TRect;
begin
   // pixels por polegadas
   ppiX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
   ppiY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);

   // não imprimir margens
   spaceLeft := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
   spaceTop := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);

   //calcular as margens
   R.Left := Round(ppiX * mLeft) - spaceLeft;
   R.Right := Printer.PageWidth - Round(ppiX * mRight) - spaceLeft;
   R.Top := Round(ppiY * mTop) - spaceTop;
   R.Bottom := Printer.PageHeight - Round(ppiY * mBottom) - spaceTop;

   // setar as margens
   re.PageRect := r;
end;

procedure TForm1.Button1Click(Sender: TObject);
var MEsq, MDir, MSup, MInf : real;
begin
   {Estilo = RETRATO
   Margem Esquerda = 25
   Margem Direita = 20
   Margem Superior = 20
   Margem Inferior = 20}

   if PageSetupDialog1.Execute then
      begin

         Printer.Orientation := poPortrait; // vertical

         MEsq := (PageSetupDialog1.MarginLeft / 2.54)/1000;
         MDir := (PageSetupDialog1.MarginRight / 2.54)/1000;
         MSup := (PageSetupDialog1.MarginTop  / 2.54)/1000;
         MInf := (PageSetupDialog1.MarginBottom / 2.54)/1000;

         SetRichEditMargins(MEsq, MDir, MSup, MInf, richEdit1);
         richEdit1.Print('Printing with margins');
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...