Hallo,
im moment drucke ich aus meinem programm mit canvas und gebe die positionen in pixel an.
.
doch das dauert mir auf dem nadeldrucker zu lange.
wie kann ich in dem sogenannten textmodusdruck die positionen mit übergeben.
.
ist das übehaupt möglich?
.
Hier ein beispiel aus dem netz für den texmodus:
.
uses WinSpool;
.
procedure DruckeRoh_String(DiesenText:string);
var Printer : array [0..255] of char;
p : Integer;
.
function RawDataToPrinter(const szPrinterName : string;
const data:string;
dwCount : DWORD) : boolean;
var
hPrinter : THandle;
DocInfo : TDocInfo1;
dwJOB : DWORD;
dwBytesWritten : DWORD;
begin
Result := False;
if OpenPrinter (pchar (szPrinterName), hPrinter, Nil) then
try
// Fill in the structure with info about this "document"
DocInfo.pDocName := 'My Document';
DocInfo.pOutputFile := Nil;
DocInfo.pDatatype := 'RAW';
// Inform the spooler the document is beginning
dwJob := StartDocPrinter (hPrinter, 1, @docInfo);
if dwJob <> 0 then
try
if StartPagePrinter (hPrinter) then
try
if WritePrinter (hPrinter, Pchar(data), dwCount, dwBytesWritten) then
Result := dwBytesWritten = dwCount;
finally
EndPagePrinter (hPrinter)
end
finally
EndDocPrinter (hPrinter);
end
finally
ClosePrinter (hPrinter)
end
end; {RawDataToPrinter}
.
begin
GetProfileString ('windows',
'device',
',,,',
Printer,
sizeof(Printer));
p := Pos (',', Printer);
if p > 0 then
Printer [p - 1] := #0;
RawDataToPrinter (Printer, DiesenText, length(DiesenText));
end;
.
Danke für eure Hilfe
im moment drucke ich aus meinem programm mit canvas und gebe die positionen in pixel an.
.
doch das dauert mir auf dem nadeldrucker zu lange.
wie kann ich in dem sogenannten textmodusdruck die positionen mit übergeben.
.
ist das übehaupt möglich?
.
Hier ein beispiel aus dem netz für den texmodus:
.
uses WinSpool;
.
procedure DruckeRoh_String(DiesenText:string);
var Printer : array [0..255] of char;
p : Integer;
.
function RawDataToPrinter(const szPrinterName : string;
const data:string;
dwCount : DWORD) : boolean;
var
hPrinter : THandle;
DocInfo : TDocInfo1;
dwJOB : DWORD;
dwBytesWritten : DWORD;
begin
Result := False;
if OpenPrinter (pchar (szPrinterName), hPrinter, Nil) then
try
// Fill in the structure with info about this "document"
DocInfo.pDocName := 'My Document';
DocInfo.pOutputFile := Nil;
DocInfo.pDatatype := 'RAW';
// Inform the spooler the document is beginning
dwJob := StartDocPrinter (hPrinter, 1, @docInfo);
if dwJob <> 0 then
try
if StartPagePrinter (hPrinter) then
try
if WritePrinter (hPrinter, Pchar(data), dwCount, dwBytesWritten) then
Result := dwBytesWritten = dwCount;
finally
EndPagePrinter (hPrinter)
end
finally
EndDocPrinter (hPrinter);
end
finally
ClosePrinter (hPrinter)
end
end; {RawDataToPrinter}
.
begin
GetProfileString ('windows',
'device',
',,,',
Printer,
sizeof(Printer));
p := Pos (',', Printer);
if p > 0 then
Printer [p - 1] := #0;
RawDataToPrinter (Printer, DiesenText, length(DiesenText));
end;
.
Danke für eure Hilfe