Re: HELP! Принтер замучал.
- From
- Sergei Meleshko ()
- To
- All ()
- Date
- 1998-07-24T13:04:15Z
- Area
- RU.TRADESOFT
From: "Sergei Meleshko" <msd@pnsjkh.belpak.brest.by>
Reply-To: msd@pnsjkh.belpak.brest.by
Привет Max!
Max Slobodski сообщает, что его замучал принтер :-)))
[...]
>>>Господа, помогите!
>>>Кто знает, можно ли вообще из-под окошек печатать на матричном принтере
>>>(Epson) на рулоне так,
>>>чтобы он не делал прогонов страниц и не делал промежутков между ними.
>>Пример
>>>использования - печать кассовых чеков - должна выползти одна длинная
>лента.
>
>>Можно, можно в delphi.ru постоянно обсуждается проблемы печати на
>>матричномпринтере из под windows .
>
>Alex, если знаете что-либо по этому вопросу, напишите пожалуйста. Посмотред
>последние 300 заголовков в fido7.ru.delphi и ничегл похожего не втдел.
Я знаю, как это (печать из винды в draft mode на матричном принтере)
сделать и уже полгода успешно применяю. Кидаю процедурку, которая у
меня печатает текст:
[cut here...]
procedure TDocument.Print;
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
Device,Driver,Port: PChar;
DeviceMode: Integer;
i,j: Integer;
const
PageDivider: PChar = chr(12);
begin
Device := StrAlloc(255);
Driver := StrAlloc(255);
Port := StrAlloc(255);
Printer.GetPrinter(Device,Driver,Port,DeviceMode); // определяем принтер
try
if not OpenPrinter(Device, Handle, nil) then begin
MessageDlg('Ошибка принтера ' + IntToStr(GetLastError),mtError,[mbOk],0);
Abort;
end;
finally
StrDispose(Device);
StrDispose(Driver);
StrDispose(Port);
end; // try finally
with DocInfo1 do begin
pDocName := PChar(Caption);
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);
for i := 1 to Copies do begin
for j := 0 to Pages.Count-1 do begin
StartPagePrinter(Handle);
WritePrinter(Handle,PChar(StrToOEM((Pages[j] as TStringList).Text)),Length((Pages[j] as TStringList).Text),N);
if j < Pages.Count-1 then WritePrinter(Handle,PageDivider,StrLen(PageDivider),N);
EndPagePrinter(Handle);
end; // for
end; // for
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;
[...and cut here]
Если тебе доводилось работать с WinAPI, то этот пример ты должен
разобрать без проблем. Если не получится - пишите письма.
--
Сергей Мелешко <msd@pnsjkh.belpak.brest.by>
--- ifmail v.2.14dev2
* Origin: Пинское ГПО ЖКХ (2:5020/400@fidonet)