Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Вниз

Не выгонять лист после печати   Найти похожие ветки 

 
sVic   (2004-01-05 14:05) [0]

Добрый день. Подскажите как напечатаь строку на принтере и при этом не выгонять лист.

Использую код:
Printer.BeginDoc;
Printer.Canvas.TextOut(1,1,"Строка 1");
Printer.EndDoc;
Строка печатается и следом выгоняется лист
Пробовал через AssignPrn - таже проблема.


 
Zergling   (2004-01-05 14:10) [1]

Задай нужную длину страницы

procedure Tform1.SetPageSizes( APageLength, APageWidth : Integer);
var
hDeviceMode, ADeviceMode : THandle;
StubDevMode : TDeviceMode;
NewDevMode : ^TDeviceMode;
ADevice, ADriver, APort : array[0..255] of Char;
hPrinter : THandle;
begin
Printer.GetPrinter( ADevice, ADriver, APort, ADeviceMode);
if not OpenPrinter( ADevice, hPrinter, nil ) then
raise EPrinter.Create( SysErrorMessage( GetLastError ));
try
hDeviceMode := GlobalAlloc( GHND, DocumentProperties(
0, hPrinter,
ADevice, StubDevMode, StubDevMode, 0) );
NewDevMode := GlobalLock(hDeviceMode);
DocumentProperties( 0, hPrinter, ADevice, NewDevMode^,
NewDevMode^,
DM_OUT_BUFFER);
try
NewDevMode.dmFields := NewDevMode.dmFields or DM_PAPERSIZE or
DM_PAPERLENGTH or
DM_PAPERWIDTH;
NewDevMode.dmPaperSize := DMPAPER_USER;
NewDevMode.dmPaperLength := APageLength;
NewDevMode.dmPaperWidth := APageWidth;
DocumentProperties( 0, hPrinter, ADevice,
NewDevMode^, NewDevMode^,
DM_IN_BUFFER or DM_OUT_BUFFER);
finally
GlobalUnlock(hDeviceMode);
end;
Printer.SetPrinter( ADevice, ADriver, APort,hDeviceMode );
finally
ClosePrinter( hPrinter );
end;
end;

P.S. Может нужно разместить это в FAQ? Несколько раз это вопрос уже проплывал.


 
YuRock   (2004-01-05 14:13) [2]

Ты же в графике печатаешь, по-этому при EndPage или EndDoc принтер страницу выплевывает. Есть 2 варианта:

1. Плохой - делать так же, но без EndDoc;

2. Печатать в тексте:
2.1. Создать текстровый файл и написать:


const
PrnPort = "LPT1:";
...
begin
// Подготовка текстового файла с одной строкой
// ...
CopyFile("имя файла", PrnPort, False);
end;
...


2.2. Делать так же, как и 2.1., но без создания промежут. файла (сразу писать в порт, открытый как файл).


 
sVic   (2004-01-05 14:50) [3]

Спасибо, через LPT1 все получилось.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
14-49726
Style
2003-12-22 21:02
2004.01.16
Народ а почему мелкософт не хочет переписать GUI


1-49642
Sandman25
2004-01-04 12:30
2004.01.16
published в форме


11-49476
Olgerd
2003-05-01 19:28
2004.01.16
Кнопка программы на KOL в панели задач


3-49452
Danilas
2003-12-22 00:48
2004.01.16
Inter Base


4-49806
Johnson
2003-11-10 18:45
2004.01.16
Как наити нужную программу???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский