Cetak Data ke Printer dengan Mengganti Properti Font

Pada artikel saya di Mencetak Text Langsung ke Printer dan Mencetak Data ke Printer dengan Perintah Escape, kita masih belum dapat menentukan ukuran dan nama font. Di artikel ini, saya akan memperluas program di kedua artikel tadi agar kita dapat mengganti ukuran font dan jenis font.

Fungsi-fungsi yang dipakai disini berasal dari unit Printers, sehingga jangan lupa menyertakannya di bagian uses

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls,
  Printers, Graphics;


Penggantian properti font dilakukan diantara begindoc dan enddoc. Untuk menggati nama font dan ukuran font, kita hanya perlu memberikan perintah seperti ini:

Printer.Canvas.Font.Name := 'Times New Roman';
Printer.Canvas.Font.Size := 10;
Printer.Canvas.Font.Style := []; 


Ukuran font terkadang kurang tepat. Untuk memastikan ketepatannya, kita perlu menambahkan baris program berikut:

 Printer.Canvas.Font.PixelsPerInch:=
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);



Sedangkan untuk mencetak tulisan pada baris dan kolom tertentu, kita menggunakan perintah semacam ini:

Printer.Canvas.Textout(100, 10, 'Di program oleh');


Program Selengkapnya:

Cetak Data ke Printer dengan Mengganti Properti Font Rating: 4.5 Diposkan Oleh: Good Dreamer

3 comments:

  1. tanya bang
    perintah diatas saya gabung dengan perintah cetak text langsung ke printer tetapi hasilnya dikertas ada satu baris kosong antara
    hasil perintah diatas dengan perintah cetak text langsung ke printer.
    untuk menghilangkan baris kosong tersebut gimana ya??

    BalasHapus
    Balasan
    1. coba sertakan cuplikan programnya

      Hapus
    2. berikut bang

      Procedure DirectPrint(s : String);
      type
      TPassThroughData = Record
      nLen : Word;
      sData : Array[0..255] of AnsiChar;
      end;

      var
      BlokData:TPassThroughData;
      Testin:Integer;
      begin
      Testin:=PASSTHROUGH;
      if Escape(Printer.handle,QUERYESCSUPPORT,SizeOf(Testin),@Testin,nil)>0 then
      begin
      StrPCopy(BlokData.sData,s);
      BlokData.nLen:=StrLen(BlokData.sData);
      Escape(printer.handle,PASSTHROUGH,0,@BlokData,nil);
      end;
      end;

      procedure TForm1.btn1Click(Sender: TObject);
      const
      gantibaris=#13#10;
      var
      i:Integer;
      begin
      Printer.BeginDoc;
      Printer.Canvas.Font.Name:='Times New Roman';
      Printer.Canvas.Font.Size:=15;
      Printer.Canvas.Font.Style:=[];
      Printer.Canvas.Font.PixelsPerInch:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY);
      Printer.Canvas.TextOut(100,1,'FAMILY MART');
      Printer.EndDoc;

      Printer.BeginDoc;
      for i:=0 to mmo1.Lines.Count do
      begin
      DirectPrint(mmo1.Lines[i] + gantibaris);
      end;
      Printer.EndDoc;
      end;

      Hapus

Diberdayakan oleh Blogger.