立象X-1000打印机打印(救命)(200分)

  • 主题发起人 小苹果
  • 开始时间

小苹果

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我们公司购买了立象公司的X-1000条码打印机,现在我要使用它和我们的数据库
相连接,从数据库中调用记录输出到打印机去。。可是我不知道怎么去编写打印模块。
打印模块包括:1:控制打印机,并向打印机发送数据(可以是RS232也可以是并口)。
2: 制作条码标签,标签上面有汉字,表格,条码,其中条码是数据库
中的记录。
我需要delphi+sql2000的,只要是例子或者控件都可以。
我学编程才几个月,现在就要我做一个这样的东西,我都怕。。。。。拉。。:)
我现在总共只有325分拉,好象难题最多是200分吧,我就先给200分,要是需要我可以全部
家当都给兄弟们!!!!!!!
 
他们没有相关的开发包吗?一般这种打印机都是专用的命令的!
 
嘿,不就是套打吗?用尺量好座标。
方法1:在报表控件对应的位置放上你的条码数据。
方法2:自己定义纸张大小。用决定座标打印(x,y)。
相关代码如下:
RateX, RateY: Integer;//定义在private 里
//初始化打印机的一些参数
function InitPrinter: Boolean;
begin
Result := Printer.Printers.Count > 0;
RateX := MulDiv(GetDeviceCaps(Printer.Handle, LOGPIXELSX), 1000,254 );//254
RateY := MulDiv(GetDeviceCaps(Printer.Handle, LOGPIXELSY),1000,254);
end;

//设置纸张大小,x为纸张,y宽为纸张高,均以0.1mm为单位
procedure SetPaperSize(X, Y: Integer);
var
Device, Driver, Port: PChar;
HDMode: THandle;
PDMode: PDevMode;
begin
Device := StrAlloc(cchDeviceName);
Driver := StrAlloc(MAX_PATH);
Port := StrAlloc(32);
try
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, HDMode);
if HDMode <> 0 then
begin
PDMode := GlobalLock(HDMode);
if PDMode <> nil then
begin
with PDMode^do
begin
dmPaperSize := 256;
dmPaperWidth := X;
dmPaperLength := Y;
dmFields := dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
GlobalUnlock(HDMode);
end;
Printer.PrinterIndex := Printer.PrinterIndex;
end;
end;
finally
StrDispose(Device);
StrDispose(Driver);
StrDispose(Port);
end;
end;

//转换x方向值,由0.1mm单位转换成Pixel单位
function TransformX(X: Integer): Integer;
begin
Result := MulDiv(X, RateX, 1000);
end;

//转换y方向值勤,由0.1mm单位转换成Pixel单位
function TransformY(Y: Integer): Integer;
begin
Result := MulDiv(Y, RateY, 1000);
end;

//转换点的座标系,由0.1mm单位转换成Pixel单位
procedure TransformPoint(Point: TPoint);
begin
Point.x := TransformX(Point.x);
Point.y := TransformY(Point.y);
end;

//转换区域的座标系,由0.1mm单位转换成Pixel单位
procedure TransformRect(Rect: TRect);
begin
Rect.Left := TransformX(Rect.Left);
Rect.Right := TransformX(Rect.Right);
Rect.Top := TransformY(Rect.Top);
Rect.Bottom := TransformY(Rect.Bottom);
end;

procedure Txkz.PR1Click(Sender: TObject);
begin
if not InitPrinter then
Application.MessageBox('打印机设置不正确', '错误', mb_IconError + mb_OK)
else
begin
//定义纸张为220MMX140MM
SetPaperSize(2670, 3800);
//打印文本test
Printer.Orientation:=poLandscape;//打印方向
with Printerdo
begin
begin
Doc;
with canvasdo
begin
s:=ZSLX.Text;//你要打印的数据。
Font.Name:='楷体_GB2312';
Font.Size:=16;
TextOut(TransformX(2430), TransformY(800), S);//x=243mm,y=80mm
end;
enddoc;
end;
记住要 uses printers
 
其实在光盘都有delphi的编程示例,你仔细看看就明白了。
 
顶部