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

(Resolvido) Configuração do PageSetupDialog


Arrais Júnior

Pergunta

bom dia, estou usando o componente PrintDialog para imprimir um texto do RichEdit, contudo, a impressão sai como se fosse em PAISAGEM, mesmo estando marcado RETRATO.

utilizo uma impressora matricial epson fx-890

e esse código em um botão

If (PrintDialog1.Execute) then

begin

Printer.Orientation := poLandscape;

RichEdit1.Print(ExtractFilePath(Application.ExeName) + '\Impressão.txt');.

obs: tem que ser feita alguma alteração nos compenentes PageSetupDialog e PrinterSetupDialog para que eles funcionem?

procedure TForm1.SpeedButton14Click(Sender: TObject);

begin

pagesetupdialog1.execute;

end;

procedure TForm1.SpeedButton9Click(Sender: TObject);

begin

printersetupdialog1.execute;

end;

aproveitando o tópico, usando os componentes Dialog, tem como fazer uma visualização de impressão?

obrigado.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

eu li, porém, não consegui encontrar algo que me ajudasse no meu problema.

vou tentar deixar bem claro o que eu preciso.

preciso de um botão que imprima, usando o PrintDialog, com esses atributos, levando em consideração uma folha normal A4:

Estilo = RETRATO

Margem Esquerda = 25

Margem Direita = 20

Margem Superior = 20

Margem Inferior = 20

tem como? como ficaria o código?

obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • 0

obrigado pela ajuda jhonas...

eu não consegui, inclusive, já tinha visto dois desses links em minhas procuras..

mesmo assim obrigado.

se algum puder postar como ficaria para:

preciso de um botão que imprima, usando o PrintDialog, com esses atributos, levando em consideração uma folha normal A4:

Estilo = RETRATO

Margem Esquerda = 25

Margem Direita = 20

Margem Superior = 20

Margem Inferior = 20

Link para o comentário
Compartilhar em outros sites

  • 0

OK... vou te ajudar

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

opa! aqui estou :P

o problema da impressao em paisagem foi corrigido, obrigado!

tou tendo um probleminha, as margens não tão saindo como é configurado...

não importa se eu altero no cod.

Printer.Orientation := poPortrait; // vertical

MEsq := (PageSetupDialog1.MarginLeft / 2.54)/100;

MDir := (PageSetupDialog1.MarginRight / 2.54)/100;

MSup := (PageSetupDialog1.MarginTop / 2.54)/100;

MInf := (PageSetupDialog1.MarginBottom / 2.54)/100;

...

ou se eu altero na janelinha que imprime...ela sempre sai do mesmo tamanho Oo, não deixando a margem :(

eu já tentei mudar o tipo de papel, porem, a mesma coisa..

alguma luz?

eu uso uma impressoa matricial epson 980.

obrigao..jhonas...me ajuda! hiiihih =D

Link para o comentário
Compartilhar em outros sites

  • 0
ou se eu altero na janelinha que imprime...ela sempre sai do mesmo tamanho Oo, não deixando a margem

foi mal ... erro no calculo

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

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

obrigado...amanhã quando eu for pro trabalho eu teste novamente =D

vlws mesmo.

eu tenho um botao que serve de SALVAR COMO, igual o dos word e tals..

como é que faz pra por um botao que SALVA o arquivo já aberto...tipo o SALVAR do word..para evitar que se perca o trabalho se o pc travar e tals.

Editado por Arrais Júnior
Link para o comentário
Compartilhar em outros sites

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...