![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
коды для принтера [D7, Win2k]
odessey © (2005-01-11 18:45:00)Вопрос вот какой, надо напечатать текстовый файл, но не просто.
Файл содержит коды для принтера в начале и в конце файла.
если я буду пускать через мемо или ричедит то коды не будут работать.
Вот так тож коды подводят (27 или 12 символ, к примеру)
AssignFile(FileTxt,'d:\1.txt');
AssignPrn(PrintTxt);
Reset(FileTxt);
Rewrite(PrintTxt);
while Not EOF(FileTxt) do
begin
Readln(FileTxt, TempStr);
Writeln(PrintTxt, TempStr);
end;
CloseFile(FileTxt);
CloseFile(PrintTxt);
может кто подскажет как делать только поподробнее пожалуйста!
Заранее спасибо
vital (2005-01-14 11:21:00) [1]Вот так реально у меня работает, и ESC-коды на ура идут
procedure WriteRawStringToPrinter(PrinterName:string; S:string);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('Error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do
begin
pDocName := PChar('test doc');
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WriteRawStringToPrinter(edit1.Text, 'Test This'#12);
// В качестве первого параметра указать сетевое имя или полное локальное имя
// принтера, например, «\\sapr_1\HpLaserJ» или «HP DesignJet 430 (E/A0) by HP»
end;
odessey (2005-01-13 21:22:00) [2]не помогло.....проблема в этих кодах управления принтера....винда чтоль их меняет и принтер не понимает коды
Alexander Panov (2005-01-13 20:12:00) [3]Попробуй заменить WriteLn на Write.
odessey (2005-01-13 19:50:00) [4]вот еще один вариант (тож не помог)
procedure TForm1.Button2Click(Sender: TObject);
var
pDevice : pChar;
pDriver : pChar;
p,pPort : pChar;
hDMode : THandle;
PDMode : PDEVMODE;
begin
//if PrintDialog1.Execute then begin
p:=PAnsiChar(ComboBox1.Text);
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
Printer.SetPrinter(p, PDriver, p, hDMode);
FreeMem(pDevice, cchDeviceName);
FreeMem(pDriver, MAX_PATH);
FreeMem(pPort, MAX_PATH);
Printer.BeginDoc;
Printer.Canvas.TextOut(100, 100, chr(27)+chr(33)+chr(128)+'Delphi Is RAD!'+chr(27)+chr(33)+chr(00));
Printer.EndDoc;
Почему коды не работают? Мастера подскажите
odessey (2005-01-12 19:29:00) [5]коды должны изменить шрифт принтера, но некоторые из них не отображаются при посылке на печать (проблема!) и из-за этого часть из них печатается на бумаге (а должны изменить настройку принтера...шрифт)
MacroDenS (2005-01-12 19:10:00) [6]А используемый принтером шрифт не влияет на печать???
odessey (2005-01-12 19:03:00) [7]AssignFile(FileTxt,'d:\1.txt');
AssignPrn(PrintTxt);
Reset(FileTxt);
Rewrite(PrintTxt);
Writeln(PrintTxt, chr(27)+chr(64));
Writeln(PrintTxt, chr(12));
Writeln(PrintTxt, chr(27)+chr(33)+chr(01));
while Not EOF(FileTxt) do
begin
Readln(FileTxt, TempStr);
Writeln(PrintTxt, TempStr);
end;
Writeln(PrintTxt, chr(12));
Writeln(PrintTxt, chr(27)+chr(64));
CloseFile(FileTxt);
CloseFile(FileTxt1);
CloseFile(PrintTxt);
Alexander Panov (2005-01-12 16:13:00) [8]odessey (12.01.05 14:33) [2]
результат тот же
Код покажи.
odessey (2005-01-12 14:51:00) [9]
> Alexander Panov
Epson матричный.....разве это имеет значение? Если этот файл вручную из под доса пускаю, то все нормально...коды видет
Alexander Panov (2005-01-12 14:45:00) [10]odessey (11.01.05 18:45)
Ты хоть бы сказал, какой принтер у теюя.
odessey (2005-01-12 14:44:00) [11]распечатывает их квадратами(
KSergey (2005-01-12 14:37:00) [12]> Вот так тож коды подводят
Т.е.? Не попадают на принтер?
odessey (2005-01-12 14:33:00) [13]
> выделить коды из текста и запускать отдельным Write'ом
результат тот же
Семен Сорокин (2005-01-11 19:15:00) [14]выделить коды из текста и запускать отдельным Write'ом