一
在銀行
二
分析上述單據的特征
三
//取得字符的高度
function CharHeight: Word;
var
Metrics: TTextMetric;
begin
GetTextMetrics(Printer
Result := Metrics
end;
file://取得字符的平均寬度
function AvgCharWidth: Word;
var
Metrics: TTextMetric;
begin
GetTextMetrics(Printer
Result := Metrics
end;
file://取得紙張的物理尺寸
function GetPhicalPaper: TPoint;
var
PageSize : TPoint;
begin
file://PageSize
file://PageSize
Escape(Printer
Result := PageSize;
end;
file://
file://取得紙張的邏輯尺寸
function PaperLogicSize: TPoint;
var
APoint: TPoint;
begin
APoint
APoint
Result := APoint;
end;
file://紙張水平對垂直方向的縱橫比例
function HVLogincRatio: Extended;
var
AP: TPoint;
begin
Ap := PaperLogicSize;
Result := Ap
end;
file://取得紙張的橫向偏移量
function GetOffSetX: Integer;
begin
Result := GetDeviceCaps(Printer
end;
file://取得紙張的縱向偏移量
function GetOffSetY: Integer;
begin
Result := GetDeviceCaps(Printer
end;
file://毫米單位轉換為英寸單位
function MmToInch(Length: Extended): Extended;
begin
Result := Length/
end;
file://英寸單位轉換為毫米單位
function InchToMm(Length: Extended): Extended;
begin
Result := Length*
end;
file://取得水平方向每英寸打印機的點數
function HPointsPerInch: Integer;
begin
Result := GetDeviceCaps(Printer
end;
file://取得縱向方向每英寸打印機的光柵數
function VPointsPerInch: Integer;
begin
Result := GetDeviceCaps(Printer
end;
file://橫向點單位轉換為毫米單位
function XPointToMm(Pos: Integer): Extended;
begin
Result := Pos*
end;
file://縱向點單位轉換為毫米單位
function YPointToMm(Pos: Integer): Extended;
begin
Result := Pos*
end;
file://設置紙張高度
procedure SetPaperHeight(Value:integer);
var
Device : array[
Driver : array[
Port : array[
hDMode : THandle;
PDMode : PDEVMODE;
begin
file://自定義紙張最小高度
if Value <
file://自定義紙張最大高度
if Value >
Printer
Printer
if hDMode <>
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^
DM_PAPERLENGTH;
pDMode^
pDMode^
pDMode^
pDMode^
GlobalUnlock(hDMode);
end;
end;
Printer
end;
file://設置紙張寬度
Procedure SetPaperWidth(Value:integer);
var
Device : array[
Driver : array[
Port : array[
hDMode : THandle;
PDMode : PDEVMODE;
begin
file://自定義紙張最小寬度
if Value <
file://自定義紙張最大寬度
if Value >
Printer
Printer
if hDMode <>
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^
DM_PAPERWIDTH;
pDMode^
file://將毫米單位轉換為
pDMode^
pDMode^
pDMode^
GlobalUnlock(hDMode);
end;
end;
Printer
end;
file://在 (Xmm
procedure PrintText(X
var
OrX
Px
AP: TPoint;
Fn: TStrings;
FileName: string;
OffSetX
begin
file://打開配置文件
try
Fn := TStringList
FileName := ExtractFilePath(Application
if FileExists(FileName) then
begin
Fn
file://橫向偏移量
OffSetX := StrToInt(Fn
file://縱向偏移量
OffSetY := StrToInt(Fn
end
else
begin
file://如果沒有配置文件
Fn
Fn
Fn
end;
finally
Fn
end;
X := X + OffSetX;
Y := Y + OffSetY;
Px := Round(Round(X * HPointsPerInch *
Py := Round(Round(Y * VPointsPerInch *
Py := Py
Px := Px +
Printer
Printer
file://Printer
Printer
end;
在主窗體中加入對mprint單元的引用
Printer
PrintText(
PrintText(
PrintText(
PrintText(
PrintText(
PrintText(
Printer
觀察結果
其它
四
筆者通過該方法
From:http://tw.wingwit.com/Article/program/Delphi/201311/25061.html