Dos Modunda Print
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 136
- Kayıt: 18 Oca 2005 05:24
- Konum: İzmir
Dos Modunda Print
Dos modunda çıktı almak istiyorum bunu nasıl yada hangi componentler le yapabilirim
Merhaba,
Bunun için yazmak istediğin bilgiyi önce bir text dosyaya satır satır yazdıktan sonra bu dosyayı aşağıdaki gibi SpoolFile Fonksiyonu ile istediğin yazıcıya yazdırabilirsin.
Kolay gelsin..
Bunun için yazmak istediğin bilgiyi önce bir text dosyaya satır satır yazdıktan sonra bu dosyayı aşağıdaki gibi SpoolFile Fonksiyonu ile istediğin yazıcıya yazdırabilirsin.
Kod: Tümünü seç
// YaziYaz('C:\Temp\Temp.prn', Printer.Printers[Printer.PrinterIndex]);
procedure YaziYaz(const PrnFile, PrinterName: String);
Var
AFile: TextFile;
begin
AssignFile(AFile, PrnFile);
ReWrite(AFile);
try
WriteLn(AFile,'Yazılacak Satır 1');
WriteLn(AFile,'Yazılacak Satır 2');
WriteLn(AFile,'Yazılacak Satır 3');
.
.
.
finally
CloseFile(AFile);
end;
If SpoolFile(PrnFile, PrinterName) <> 0 then
MessageDlg('Belge Yazdırılamıyor !',mtError,[mbOK],0);
end;
Function SpoolFile(const FileName, PrinterName: string): Integer;
var
Buffer: record
JobInfo: record
Path: PChar;
JobID: DWORD;
end;
PathBuffer: array[0..255] of Char;
end;
SizeNeeded: DWORD;
Handle: THandle;
PrtName: string;
ok: Boolean;
begin
If not FileExists(FileName) Then
begin
Result:= 99;
Exit;
end;
PrtName:= PrinterName;
if PrtName = '' then
PrtName:= TrimPrinter(Printer.Printers[Printer.PrinterIndex]);
ok:= False;
if OpenPrinter(PChar(PrtName), Handle, nil) then
if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
ok := True;
if not ok then
begin
Result:= GetLastError
end else begin
If FileExists(FileName) Then
begin
try
DeleteFile(PChar(FileName));
finally
end;
end;
Result := 0;
end;
end;