不好意思,我可能没有说清楚,我要的是打印机可以直接可认的程序,不是转成文本的打印,谢谢!! 下面是我写的,有问题,朋友们看看 var DD,EE,SS:DWORD; write_os:Toverlapped; pDataToWrite:PChar; SendString:string; begin hSend:=CreateFile(pchar('LPT1'),GENERIC_WRITE,0, nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); SetupComm(hSend,1024,1024); SS := 0; SendString :=SendString+chr(7); //发送的字符串 SendString :=SendString+chr(27)+chr(106)+'23'; //发送的字符串 SendString :=SendString+chr(27)+chr(64); //发送的字符串 EE := length(SendString) + 1; pDataToWrite := PChar(SendString); Write_Os.hEvent := CreateEvent(nil,True,False,nil); SetCommMask(hSend,EV_TXEMPTY); writefile(hsend,pDatatoWrite[SS],EE,DD,@write_os); CloseHandle(hSend);
implementation uses printers; {$R *.DFM}procedure TForm1.BitBtn1Click(Sender: TObject); begin printersetupdialog1.execute; //选择输出的打印机以及其他打印控制选项 end;procedure TForm1.BitBtn2Click(Sender: TObject); var lines:integer; prntext:system.text; //将PRNTEXT声名为一个在SYSTEM程序单元当中定义的文本文件 begin if printdialog1.execute then assignprn(prntext); //将PRNTEST分配给打印机 rewrite(prntext); //调用REWRITE函数,为输出打开已分配的文件 printer.canvas.font:=memo1.font; //把当前MEMO1的字体指定给打印对象的CANVAS的字体属性 for lines:=0 to memo1.lines.count-1 do writeln(prntext,memo1.lines[lines]); //把MEMO的内容写到打印机对象 system.close(prntext); //关闭打印文件 end;procedure TForm1.FormCreate(Sender: TObject); begin memo1.lines.loadfromfile('c:\dos\os2.txt'); //在FORM建立时读入C:\DOS\OS2.TXT文件 end; end.
Printers;begin
Printer.BeginDoc;
Printer.Canvas.TextOut(0, 0, '直接打印本字符串');
Printer.EndDoc;
end;
下面是我写的,有问题,朋友们看看
var
DD,EE,SS:DWORD;
write_os:Toverlapped;
pDataToWrite:PChar;
SendString:string;
begin
hSend:=CreateFile(pchar('LPT1'),GENERIC_WRITE,0, nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
SetupComm(hSend,1024,1024);
SS := 0;
SendString :=SendString+chr(7); //发送的字符串
SendString :=SendString+chr(27)+chr(106)+'23'; //发送的字符串
SendString :=SendString+chr(27)+chr(64); //发送的字符串
EE := length(SendString) + 1;
pDataToWrite := PChar(SendString);
Write_Os.hEvent := CreateEvent(nil,True,False,nil);
SetCommMask(hSend,EV_TXEMPTY);
writefile(hsend,pDatatoWrite[SS],EE,DD,@write_os);
CloseHandle(hSend);
uses printers;
{$R *.DFM}procedure TForm1.BitBtn1Click(Sender: TObject);
begin
printersetupdialog1.execute; //选择输出的打印机以及其他打印控制选项
end;procedure TForm1.BitBtn2Click(Sender: TObject);
var
lines:integer;
prntext:system.text;
//将PRNTEXT声名为一个在SYSTEM程序单元当中定义的文本文件
begin
if printdialog1.execute then
assignprn(prntext); //将PRNTEST分配给打印机
rewrite(prntext); //调用REWRITE函数,为输出打开已分配的文件
printer.canvas.font:=memo1.font; //把当前MEMO1的字体指定给打印对象的CANVAS的字体属性
for lines:=0 to memo1.lines.count-1 do
writeln(prntext,memo1.lines[lines]);
//把MEMO的内容写到打印机对象
system.close(prntext); //关闭打印文件
end;procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.lines.loadfromfile('c:\dos\os2.txt');
//在FORM建立时读入C:\DOS\OS2.TXT文件
end;
end.