给你一个我的示例程序,具体打印机的控制码不太一样,我所使用的打印机为SP320S
var
  PrnHwnd:THandle;
procedure OpenLptPrn;
begn
      PRNHwnd:=CreateFile(
      'LPT1',
      GENERIC_READ or GENERIC_WRITE,
      0,
      nil,
      OPEN_EXISTING,
      FILE_FLAG_OVERLAPPED,
      0);
      if PRNHwnd=INVALID_HANDLE_VALUE then
        Exception.Create('无效并行口');
end;
procedure SendToPrinter(SendBuf:array of byte);overload
var
  tem:cardinal;
begin
  WriteFile(PRNHwnd,SendBuf,High(SendBuf)+1,tem,OL);
end;procedure SendToPrinter(SendBuf:string);overload
var
  i:integer;
begin
  for i:=1 to Length(SendBuf) do
    SendToPrinter([ord(SendBuf[i])]);
end;
  SendToPrinter([$1B,$7A,$31]);         //1/6"行距
  SendToPrinter([$1B,$43,22]);      //页长22行  即页长22/6"  SendToPrinter([$1B,$41,72]);       //设定36/72"行距
  SendToPrinter([$1B,$4A,80]);     //实行单次80/72"顺向跳行
  SendToPrinter([$1B,$4A,29]);      //实行单次32/72"顺向跳行  SendToPrinter([$1B,$44,8,25,0]);  //设置横向制表  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXv.Plaza);          //打印
  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXv.LaneNo);          //打印
  SendToPrinter([$0A]);             //跳行
  SendToPrinter([$1B,$4A,24]);     //实行单次80/72"顺向跳行  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXv.ClerkNum);      //打印
  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXv.Date);          //打印
  SendToPrinter([$0A]);             //跳行
  SendToPrinter([$1B,$4A,24]);     //实行单次80/72"顺向跳行  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXV.ClassCar);      //打印
  SendToPrinter([9]);               //实行横向制表
  SendToPrinter(PrintXV.MoneyNum);    //打印
  SendToPrinter([$0C]);             //跳页