Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BRUNO AMABILE

Imprimir em letra maior

Recommended Posts

Olá a todos! Estou trabalhando num sistema de impressão em impressoras matriciais e eu quero mudar o tamanho da letra de uma variável global.

 

procedure Cabecalho;
    begin
      XPrint.impf(01,30,Trim(Sistema.EmpresaUsr),[Negrito]);
      XPrint.imp(02,01,Center(Trim(Sistema.EnderecoUsr) + ' - ' +Trim(Sistema.BairroUsr)+ ' - ' +Trim(Sistema.CidadeUsr)+ ' - ' +Trim(Sistema.UfUsr),80));

 

 

A variável que eu quero mudar é a EmpresaUrs(primeira linha de impressão)

 

Xprint é um componente de impressão

 

imp é o método que imprime linha, coluna, texto

impf imprime linha, coluna, texto, tipodafonte

 

procedure Imp(Linha, Coluna: Integer; Texto: String);
    procedure Impf(Linha, Coluna: Integer; Texto: String; Fonte: TFonte);

 

Já tentei adicionar um parâmetro no impf para o tamanho da fonte mas nao funciona.

Bruno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado, vi outro post seu sobre o mesmo assunto com status resolvido... em todo caso, vamos a algumas questões:

 

Esta função que está usando para imprimir, pelo que disse, é uma função de componente certo? Este componente foi desenvolvido por você ou por terceiros? Ele é nativo do Delphi? Se sim, de que aba e versão?

 

Outra coisa: componentes não vão permitir que você jogue o tamanho da fonte a menos que exista nele uma codificação que assim o permita... não adianta por um parâmetro fonte e jogar o valor lá se no componente não existir uma procedure codificada para isso. Verifique junto ao manual do componente em questão se existe tal possibilidade.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado, vi outro post seu sobre o mesmo assunto com status resolvido... em todo caso, vamos a algumas questões:

 

Esta função que está usando para imprimir, pelo que disse, é uma função de componente certo? Este componente foi desenvolvido por você ou por terceiros? Ele é nativo do Delphi? Se sim, de que aba e versão?

 

Outra coisa: componentes não vão permitir que você jogue o tamanho da fonte a menos que exista nele uma codificação que assim o permita... não adianta por um parâmetro fonte e jogar o valor lá se no componente não existir uma procedure codificada para isso. Verifique junto ao manual do componente em questão se existe tal possibilidade.

 

[]'s

 

Sim. É uma função de componente. Ele foi desenvolvido por terceiros e não é nativo. Então, eu tentei adicionar um paramento dentro da procedure do XPrint(Código fonte aberto)e nao funcionou. Mas vou tentar de novo. É só dessa maneira que eu consigo alterar o tamanho da fonte mesmo né? Ou tem alguma outra saída?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, não adianta você tentar jogar uma variável nova pra rotina porque o componente não tem ela codificada, a menos que você recompile todo o componente e o codifique corretamente para o envio da informação para a impressora, senão vai dar um erro de programa mesmo... já olhou como está codificada esta TFonte no componente? O tipo de dado que ele envia é só o nome da fonte mesmo ou tem como criar uma var do tipo TFonte e setar nela mais informações, como tamanho?

 

Sem ver os códigos originais do componente fica difícil sugerir algo.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, não adianta você tentar jogar uma variável nova pra rotina porque o componente não tem ela codificada, a menos que você recompile todo o componente e o codifique corretamente para o envio da informação para a impressora, senão vai dar um erro de programa mesmo... já olhou como está codificada esta TFonte no componente? O tipo de dado que ele envia é só o nome da fonte mesmo ou tem como criar uma var do tipo TFonte e setar nela mais informações, como tamanho?

 

Sem ver os códigos originais do componente fica difícil sugerir algo.

 

[]'s

 

Muito obrigado pela dica, vou ver isso que voce me falou! Se conseguir volto pra dizer que consegui. Se quiser analisar melhor todo o componente, aí vai.

 

unit XPrint;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, XPrintSetup;

const
  MessageDefault = 'O estado atual da impressora é: %s'+#13+
                   'A Impressora/Porta %s não está respondendo.'+#13+#13+
                   'Verifique se a impressora está OnLine e se ainda tem papel.'+#13+
                   'Se a impressora estiver conectada na rede do Windows, entre em Configurações de Impressoras e "Capture" a Porta %s.';

  FontSizeBobbin75: array[0..3] of byte = (47,28,24,14);
  FontSizeBobbin89: array[0..3] of byte = (57,33,28,17);
  FontSizeLetter: array[0..3] of byte = (137,80,68,40);

  { comandos ESCAPES padrão Epson }
  a_Con = #15;          {ativa condensado}
  d_Con = #18;          {desativa condensado}
  a_Exp = #27+'W'+#1;   {ativa expandido}
  d_Exp = #27+'W'+#0;   {desativa expandido}
  a_Neg = #27+'E';      {ativa negrito}
  d_Neg = #27+'F';      {desativa negrito}
  p_Default = #27+'@';  {reset}
  p_Eject = #12;        {FF - Avança Folha}
  p_Backspace = #8;     {Backspace - usado para a acentuação}
  p_Return = #13;       {Retorno do Carro}
  p_Line = #10;         {Avança uma linha}

type
  TTipoFonte = (negrito, italico, sublinhado, expandido, normal, comp12, comp17, comp20);
  TLinha = (Seis, Oito);
  TSize  = (S05cpp,S10cpp,S12cpp,S17cpp,S20cpp);
  TPorts     = (LPT1, LPT2, LPT3, LPT4, LPT5);
  TFontType  = (ftCondensed,ftSingle,ftMiddle,ftExpand);
                TAlignment = (taLeft,taCenter,taRight);
  TPaper     = (paBobbin75,paBobbin89,paLetter);
  TPrinterStatus = (psOn,psOff,psOffLine,psPaperOut,psPrinting,psIndefined);

  TTerminateEvent = procedure( Sender: TObject ) of object;
  TStartedEvent   = procedure( Sender: TObject; Port: String) of object;
  TErrorEvent     = procedure( Sender: TObject; MessageError: String ) of object;
  TFonte = set of Ttipofonte;

  TXPrint = class(TComponent)
  private
    FPort: TPorts;
    FHandle: TextFile;
    FPortStr: String;
    FFontType: TFontType;
    FPrinting: Boolean;
    FAlignment: TAlignment;
    FAdvanceLines: Byte;
    FPaper: TPaper;
    FOnTerminate: TTerminateEvent;
    FOnStarted: TStartedEvent;
    FOnError: TErrorEvent;
    FMessageError: String;
    FBold: Boolean;
    FTamanhoQteLinhas: Integer;
    FTamanhoQteLPP: TLinha;
    FNumerodeCopias: Integer;
    FFonteTamanhoPadrao: TSize;
    FLinhaAtual: Integer;
    procedure SetPort(Value: TPorts);
    procedure SetPaper(Value: TPaper);
    procedure SetFontType( Value: TFontType );
    function  GetTerminateEvent: TTerminateEvent;
    procedure SetTerminateEvent( Value: TTerminateEvent );
    function  GetStartedEvent: TStartedEvent;
    procedure SetStartedEvent( Value: TStartedEvent );
    function  GetErrorEvent: TErrorEvent;
    procedure SetErrorEvent( Value: TErrorEvent);
    procedure Error(Mess: String);
    procedure Convert(var Text: String);
  protected
    function  Replicate(Car: Char;  Quant: Integer): String;
  public
    constructor Create( AOwner : TComponent ); override;
    destructor  Destroy; override;
    function  Abrir: Boolean;
    procedure Fechar;
    procedure Imp(Linha, Coluna: Integer; Texto: String);
    procedure Impf(Linha, Coluna: Integer; Texto: String; Fonte: TFonte);
    procedure Print(Text: String; Column: Byte=0; NextLine: Boolean=True);
    function  PrinterOnLine(Porta: TPorts): Boolean;
    function  PrinterStatus(Porta: TPorts): TPrinterStatus;
    procedure NovaPagina;
    procedure Line;
    procedure Trace;
    function  MaxColumns: Byte;
    function Setup: Boolean;
  published
    property Port:        TPorts     read FPort         write SetPort;
    property FontType:    TFontType  read FFontType     write SetFontType;
    property Alignment:   TAlignment read FAlignment    write FAlignment;
    property AdvanceLines:Byte       read FAdvanceLines write FAdvanceLines Default 0;
    property Paper:       TPaper     read FPaper        write SetPaper;
    property Bold:        Boolean    read FBold	        write FBold;
    property TamanhoQteLinhas: Integer  read FTamanhoQteLinhas  write FTamanhoQteLinhas;
    property TamanhoQteLPP: TLinha read FTamanhoQteLPP write FTamanhoQteLPP;
    property NumerodeCopias: Integer read FNumerodeCopias write FNumerodeCopias;
    property FonteTamanhoPadrao: TSize read FFonteTamanhoPadrao write FFonteTamanhoPadrao;

    property Printing:   Boolean  read FPrinting   Default False;
    property PortStr:    String	  read FPortStr;

    property OnTerminate: TTerminateEvent read GetTerminateEvent write SetTerminateEvent;
    property OnStarted:   TStartedEvent   read GetStartedEvent   write SetStartedEvent;
    property OnError:     TErrorEvent     read GetErrorEvent     write SetErrorEvent;
  end;

type
  TCia = record
  Nome: String;
  Endereco: String;
  Cidade_UF_Cep: String;
  Cnpj: String;
  Ie: String;
  email: String;
  Telefone: String;
end;

TRodape = record
   Mensagem: array[1..10] of string[60];
   Autor1,
   Autor2: String[60];
end;

TPBobina = class(TXPrint)

private
  { Private declarations }
protected
  { Protected declarations }
public
  function  PrintTop(DadosEmpresa: TCia; Title,Subtitle: String): boolean;
  procedure PrintBottom(Dados: TRodape);
published
  { Published declarations }
end;

implementation

constructor TXPrint.Create( AOwner : TComponent );
begin
  inherited;
  FPort      := LPT1;
  FPortStr   := 'Lpt1';
  FFontType  := ftSingle;
  FAlignment := taLeft;
  FPaper     := paLetter;
  FLinhaAtual:= 0;
end;

destructor TXPrint.Destroy;
begin
  inherited;
  if FPrinting then
    CloseFile( FHandle );
end;

procedure TXPrint.SetPort( Value: TPorts );
begin
  if FPrinting then
    exit;
  if FPort = Value then
    exit;
  FPort	:= Value;
  FPortStr := format('Lpt%d',[ord(FPort)+1]);
end;

function TXPrint.MaxColumns: Byte;
begin
  case FPaper of
    paBobbin75:
    MaxColumns := FontSizeBobbin75[ ord(FFontType) ];
    paBobbin89:
    MaxColumns := FontSizeBobbin89[ ord(FFontType) ];
  else
    MaxColumns := FontSizeLetter[ ord(FFontType) ];
  end;
end;

procedure TXPrint.SetPaper(Value: TPaper);
begin
  if FPrinting then
    Error('Não é possível alterar o tipo de papel com a impressora em estado de "imprimindo".');
  if FPaper = Value then
    exit;
  FPaper := Value;
end;

procedure TXPrint.SetFontType( Value: TFontType );
begin
  if FFontType = Value then
    exit;
  FFontType := Value;
end;

function TXPrint.GetTerminateEvent: TTerminateEvent;
begin
  Result := FOnTerminate;
end;

procedure TXPrint.SetTerminateEvent( Value: TTerminateEvent );
begin
  FOnTerminate := Value;
end;

function TXPrint.GetStartedEvent: TStartedEvent;
begin
  Result := FOnStarted;
end;

procedure TXPrint.SetStartedEvent( Value: TStartedEvent );
begin
  FOnStarted := Value;
end;

function  TXPrint.GetErrorEvent: TErrorEvent;
begin
  Result := FOnError;
end;

procedure TXPrint.SetErrorEvent( Value: TErrorEvent);
begin
  FOnError := Value;
end;

function TXPrint.Abrir: Boolean;
begin
  result := false;
  if FPrinting then
    Error('A Impressora já está no estado de "imprimindo".');
  if not PrinterOnLine( FPort ) then
    Error('Default');
  try
    AssignFile(FHandle, FPortStr );
    ReWrite( FHandle );
    write(FHandle, p_Default);
    FPrinting := True;
    result := true;
    if Assigned(FOnStarted) then
      FOnStarted( Self, FPortStr );
  except
    on E: Exception do begin
    if UpperCase(E.Message) = 'FILE NOT FOUND' then
      Error('Porta não disponível: '+FPortStr)
    else
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.Fechar;
var
  i: Integer;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  try
    line;
    for i := 1 to FAdvanceLines do
      write( FHandle, p_Line );
    write( FHandle, p_Default );
  finally
    CloseFile( FHandle );
    FPrinting := False;
    if Assigned(FOnTerminate) then
      FOnTerminate( Self );
  end;
end;

procedure TXPrint.Impf(Linha, Coluna: Integer; Texto: String; Fonte: TFonte);
var
  iMax: byte;
  i: Integer;
  EscI,EscF: String;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  iMax := ord( FFontType );
  case FPaper of
    paBobbin75: iMax := FontSizeBobbin75[iMax];
    paBobbin89:	iMax := FontSizeBobbin89[iMax];
  else
    iMax := FontSizeLetter[iMax];
  end;
  Texto := copy(Texto,1,iMax);
  case FAlignment of
    taCenter:
    begin
      i := (iMax - length(Texto)) div 2;
      Texto := replicate(' ',i)+Texto;
    end;
    taRight:
    begin
      i := (iMax - length(Texto));
      Texto := replicate(' ',i)+Texto;
    end;
    else
      Texto := replicate(' ',Coluna)+Texto;
  end;
  Convert(Texto);
  case FFontType of
     ftCondensed: 	begin EscI := a_Con       ; EscF := d_Con;       end;
     ftSingle:		begin EscI := d_Con+d_Exp ; EscF := '';          end;
     ftMiddle:		begin EscI := a_Con+a_Exp ; EscF := d_Con+d_Exp; end;
  else
     begin
       EscI := a_Exp;
       EscF := d_Exp;
     end;
  end;
  try
    if FLinhaAtual < Linha then
      for I:=0 to (Linha - FLinhaAtual)-1 do
        Line;
    FLinhaAtual := Linha;
    Write( FHandle, p_Return);
    Write( FHandle, EscI+Texto+EscF );
    if Negrito in Fonte then
    begin
      Write( FHandle, p_Return);
      Write( FHandle, EscI+Texto+EscF );
    end;
  except
    on E: Exception do begin
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.Imp(Linha, Coluna: Integer; Texto: String);
var
  iMax: byte;
  i: Integer;
  EscI,EscF: String;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  iMax := ord( FFontType );
  case FPaper of
    paBobbin75: iMax := FontSizeBobbin75[iMax];
    paBobbin89:	iMax := FontSizeBobbin89[iMax];
  else
    iMax := FontSizeLetter[iMax];
  end;
  Texto := copy(Texto,1,iMax);
  case FAlignment of
    taCenter:
    begin
      i := (iMax - length(Texto)) div 2;
      Texto := replicate(' ',i)+Texto;
    end;
    taRight:
    begin
      i := (iMax - length(Texto));
      Texto := replicate(' ',i)+Texto;
    end;
    else
      Texto := replicate(' ',Coluna)+Texto;
  end;
  Convert(Texto);
  case FFontType of
     ftCondensed: 	begin EscI := a_Con       ; EscF := d_Con;       end;
     ftSingle:		begin EscI := d_Con+d_Exp ; EscF := '';          end;
     ftMiddle:		begin EscI := a_Con+a_Exp ; EscF := d_Con+d_Exp; end;
  else
     begin
       EscI := a_Exp;
       EscF := d_Exp;
     end;
  end;
  try
    if FLinhaAtual < Linha then
      for I:=0 to (Linha - FLinhaAtual)-1 do
        Line;
    FLinhaAtual := Linha;
    Write( FHandle, p_Return);
    Write( FHandle, EscI+Texto+EscF );
  except
    on E: Exception do begin
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.Print(Text: String; Column: Byte=0; NextLine: Boolean=True);
var
  iMax: byte;
  i: Integer;
  EscI,EscF: String;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  iMax := ord( FFontType );
  case FPaper of
    paBobbin75: iMax := FontSizeBobbin75[iMax];
    paBobbin89:	iMax := FontSizeBobbin89[iMax];
  else
    iMax := FontSizeLetter[iMax];
  end;
  Text := copy(Text,1,iMax);
  case FAlignment of
    taCenter:
    begin
      i := (iMax - length(Text)) div 2;
      Text := replicate(' ',i)+Text;
    end;
    taRight:
    begin
      i := (iMax - length(Text));
      Text := replicate(' ',i)+Text;
    end;
    else
      Text := replicate(' ',Column)+Text;
  end;
  Convert(Text);
  case FFontType of
     ftCondensed: 	begin EscI := a_Con       ; EscF := d_Con;       end;
     ftSingle:		begin EscI := d_Con+d_Exp ; EscF := '';          end;
     ftMiddle:		begin EscI := a_Con+a_Exp ; EscF := d_Con+d_Exp; end;
  else
     begin EscI := a_Exp       ; EscF := d_Exp;       end;
  end;
  try
    Write( FHandle, p_Return);
    Write( FHandle, EscI+Text+EscF );
    if FBold then begin
      Write( FHandle, p_Return);
      Write( FHandle, EscI+Text+EscF );
    end;
    if NextLine then
      Line;
  except
    on E: Exception do begin
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.NovaPagina;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  try
    Write( FHandle, p_Eject );
    FLinhaAtual := 0;
  except
    on E: Exception do
    begin
      Error(E.Message);
    end;
  end;
end;

function TXPrint.Setup: Boolean;
begin
  Result := True;
  XPSetup := TXPSetup.Create(Application);
  Try
    XPSetup.IMPRESSORAS.ItemIndex := 0;
    XPSetup.MODELOS.ItemIndex := 0;
    XPSetup.ShowModal;
  Finally
    if XPSetup.ModalResult <> mrOk then
      Result := False
    else
    begin
      case XPSetup.IMPRESSORAS.ItemIndex of
        0: FPort := LPT1;
        1: FPort := LPT2;
        2: FPort := LPT3;
        3: FPort := LPT4;
        4: FPort := LPT5;
      end;
      FPortStr := 'Lpt'+IntToStr(XPSetup.IMPRESSORAS.ItemIndex+1);
    end;
    XPSetup.Free;
  end;
end;

function TXPrint.Replicate(Car: Char;  Quant: Integer): String;
var
  X: Integer;
begin
  result := '';
  for X := 1 to Quant do
    result := result + Car;
end;

procedure TXPrint.Error(Mess: String);
var
  m: String;
begin
  if Mess = 'Default' then
  begin
    case PrinterStatus(FPort) of
         psIndefined: m := '"Indefinido"';
         psOff:       m := '"Desligada"';
         psPaperOut:  m := '"Sem Papel"';
         psOffLine:   m := '"Off Line"';
         psPrinting:  m := '"Imprimindo"';
         psOn:	      m := '"Ligada e pronta"';
     end;
     FMessageError := format(MessageDefault,[m,FPortStr,FPortStr])
  end
  else
    FMessageError := Mess;
    if Assigned(FOnError) then
      FOnError( Self, FMessageError )
  else
     raise exception.create('(XPrint) - '+FMessageError);
  abort;
end;

procedure TXPrint.Line;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  try
    Write( FHandle, p_Line);
  except
    on E: Exception do
    begin
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.Trace;
begin
  if not FPrinting then
    Error('A Impressora não está em estado de "imprimindo".');
  try
    Print(replicate('-', MaxColumns),0,true);
  except
    on E: Exception do
    begin
      Error(E.Message);
    end;
  end;
end;

procedure TXPrint.Convert(var Text: String);
const
  Max=22;
  Chars: array[1..Max] of string[1] = ('á','é','í','ó','ú','ã','õ','ç','à','ò','ê',
                                       'Á','É','Í','Ó','Ú','Ã','Õ','Ç','À','Ò','Ê');
  Esc  : array[1..Max] of string[3] = (
    ''''+p_Backspace+'a', ''''+p_Backspace+'e',
    ''''+p_Backspace+'i', ''''+p_Backspace+'o',
    ''''+p_Backspace+'u', '~'+p_Backspace+'a',
    '~'+p_Backspace+'o',  ','+p_Backspace+'c',
    '`'+p_Backspace+'a',  '`'+p_Backspace+'o',
    '^'+p_Backspace+'e',  ''''+p_Backspace+'A',
    ''''+p_Backspace+'E', ''''+p_Backspace+'I',
    ''''+p_Backspace+'O', ''''+p_Backspace+'U',
    '~'+p_Backspace+'A',  '~'+p_Backspace+'O',
    ','+p_Backspace+'C',  '`'+p_Backspace+'A',
    '`'+p_Backspace+'O',  '^'+p_Backspace+'E'
  );
var
  ii,p: Integer;
  S,C: String;
begin
  for ii := 1 to Max do begin
    while true do
    begin
      s := Chars[ii];
      p := Pos( s , Text );
      if p <= 0 then
        break;
      c := Esc[ii];
      S := copy(Text,1,p-1)  +c+   copy(Text,p+1, length(Text)-p );
      Text := S;
    end;
  end;
end;

function TXPrint.PrinterOnLine(Porta: TPorts): Boolean;
var
  nResult: Byte;
  PrnNum : Word;
begin
  {PrnNum := ord( Porta );
  asm
    mov ah, $02;
    mov dx,PrnNum;
    Int $17;
    mov nResult,ah;
  end;
  result := (nResult and $80) = $80;}
  Result := True;
end;

function TXPrint.PrinterStatus(Porta: TPorts): TPrinterStatus;
var
  nResult: Byte;
  PrnNum : Word;
begin
  PrnNum := ord( Porta );
  asm
    mov ah, $02;
    mov dx,PrnNum;
    Int $17;
    mov nResult,ah;
  end;
  case nResult of
     0: result := psOffLine;
     16: result := psPrinting;
     40: result := psPaperOut;
     48: result := psOff;
     144: result := psOn;
  else
     result := psIndefined;
  end;
end;

function TPBobina.PrintTop(DadosEmpresa: TCia; Title,Subtitle: String): boolean;
var
  i: Integer;
begin
  if not Printing then
    Abrir;
  Alignment := taCenter;
  Bold      := true;
  for i := 3 downto 0 do
  begin
    FontType := TFontType( i );
    if length(DadosEmpresa.Nome) <= MaxColumns then
      break;
  end;
  print(DadosEmpresa.Nome);
  Bold := false;
  FontType := ftCondensed;
  if DadosEmpresa.Endereco <> '' then
    print(DadosEmpresa.Endereco);
  if DadosEmpresa.Cidade_UF_Cep <> '' then
    print(DadosEmpresa.Cidade_UF_Cep);
  if trim(DadosEmpresa.Cnpj+' '+DadosEmpresa.Ie) <> '' then
    print(DadosEmpresa.Cnpj+'  '+DadosEmpresa.Ie);
  if DadosEmpresa.email <> '' then
    print('email: '+DadosEmpresa.email);
  Bold := true;
  if DadosEmpresa.Telefone <> '' then
    print('telefone: '+DadosEmpresa.Telefone);
  Bold := false;
  trace;

  FontType := ftMiddle;
  print(Title);
  FontType := ftCondensed;
  print(SubTitle);

  Alignment := taLeft;
  line;

  result := true;
end;

procedure TPBobina.PrintBottom(Dados: TRodape);
var
  i: byte;
begin
  FontType := ftCondensed;
  Bold := false;
  trace;
  if (Dados.Autor1<>'') or (Dados.Autor2<>'') then
  begin
    Alignment := taRight;
    if Dados.Autor1<>'' then
      print(Dados.Autor1);
    if Dados.Autor2<>'' then
      print(Dados.Autor2);
    line;
  end;
  Alignment := taCenter;
  for i := 1 to High(Dados.Mensagem) do
    print(Dados.Mensagem[i],0,true);
  Fechar;
end;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.