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:
Home /
delphi /
getdevicecaps /
PixelsPerInch /
print /
printer /
textout /
Cetak Data ke Printer dengan Mengganti Properti Font
Cetak Data ke Printer dengan Mengganti Properti Font
Langganan:
Posting Komentar (Atom)
Diberdayakan oleh Blogger.
tanya bang
BalasHapusperintah 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??
coba sertakan cuplikan programnya
Hapusberikut bang
HapusProcedure 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;