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

Вниз

Параметры бумаги в принтере   Найти похожие ветки 

 
vidiv ©   (2005-05-20 13:33) [0]

Я использую класс TPrinter (из Printers) для печати, т.к. он очень простой. Вопрос такой, как установить для принтера размер бумаги A4 ?


 
Marser ©   (2005-05-20 13:52) [1]

Orientation
PageHeight
PageWidth


 
default ©   (2005-05-20 13:54) [2]

Вот так люди меняют ориентацию:)


 
vidiv ©   (2005-05-21 22:10) [3]

Marser ©   (20.05.05 13:52) [1]
> PageHeight
> PageWidth

Эти параметры задаются в пикселях, к томуже readonly


 
Marser ©   (2005-05-22 20:44) [4]

Значит, нужно менять режим устройства(device mode). TPrinter такое сделать не позволяет, потому обратимся к API:
var td:pDevMode;
   hpr:Thandle;
   pdevname,pdrv,pport:pchar;
begin
 pdevname:=stralloc(100);
 pdrv:=stralloc(100);
 pport:=stralloc(25);
 printer.GetPrinter(pdevname,pdrv,pport,hpr);
 if hpr<>0 then
   try
     td:=globallock(hpr);
     if td<>nil then
     td^.dmSize:=DMPAPER_A4;
   finally
     globalunlock(hpr);
     globalfree(hpr);
     strdispose(pdevname);
     strdispose(pdrv);
     strdispose(pport)
   end;


 
vidiv ©   (2005-05-23 02:57) [5]


> Marser ©   (22.05.05 20:44) [4]

О! драгоценный код!
Вопрос: А если принтер не поддерживает А4, что будет ?


 
vidiv ©   (2005-05-23 04:02) [6]


> Marser ©   (22.05.05 20:44) [4]

Пардон, забыл... Огромное тебе спасибо!!! Дружище, очень выручил!


 
vidiv ©   (2005-05-23 09:17) [7]


> Marser ©   (22.05.05 20:44) [4]

Кстати код, почемуто не работает.
Я покапался в хелпе, и сделал следующие изменения:
Вместо:
if td<>nil then
    td^.dmSize:=DMPAPER_A4;

Написал:
if td<>nil then begin
     td^.dmSize := sizeof(_devicemode);
     td^.dmFields := DM_PAPERSIZE;
     td^.dmPaperSize := DMPAPER_A4;
    end;

Но код по прежнему не работал, причем повторный его запуск выдавал ошибку. Методом перебора я понял, что если закоментировать строку
globalfree(hpr);
То все начинает работать. С чем это может быть связано? Чтобы ответить на этот вопрос хелпа и моих знаний английского не хватило


 
-=XP=- ©   (2005-05-23 11:14) [8]

globalfree(hpr); - удаляет структуру из памяти; на самом деле лишняя строка.


 
vidiv ©   (2005-05-23 12:21) [9]


> -=XP=- ©   (23.05.05 11:14) [8]

Понято, спасибо!
:)

Спасибо всем! Особенно, товарищу по оружию Marser"у.

Прошу не удалять это сообщение, т.к. считаю что благодарность - неотъемлемая часть "вопроса"!


 
Marser ©   (2005-05-23 14:49) [10]

Ну, я ведь не готовый код дал, сам заинтересовался. Немного почитал хелп, немного Кулибу(там ошибок вообще-то выше крышы).


> -=XP=- ©   (23.05.05 11:14) [8] [Новое
>сообщение][Ответить]
> globalfree(hpr); - удаляет структуру из памяти; на
> самом деле лишняя строка.

Тоже не совсем понял, зачем.


 
Alex Konshin ©   (2005-05-24 13:05) [11]

http://home.earthlink.net/~akonshin/files/PrintLib.pas
Я там хакаю Printer.pas


 
Marser ©   (2005-05-24 14:44) [12]


> Alex Konshin ©   (24.05.05 13:05) [11] [Новое
>сообщение][Ответить]
>http://home.earthlink.net/~akonshin/files/PrintLib.pas
> Я там хакаю Printer.pas

Видел когда-то :-) Даже просматривал по поводу сабжа :-)


 
vidiv ©   (2005-05-26 12:58) [13]

PHandle(PChar(oPrinter)+oPrinter.InstanceSize-4)^;
как это объяснить?



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

Форум: "WinAPI";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
3-1118169990
Erich
2005-06-07 22:46
2005.07.18
Автоинкрементное поле


14-1119367733
GanibalLector
2005-06-21 19:28
2005.07.18
Теперь и Я инженер ;)


4-1116498180
iskatel
2005-05-19 14:23
2005.07.18
служба доступа к файлаи принтерам


14-1118919283
0legat0r
2005-06-16 14:54
2005.07.18
Не могу просмотреть архивы форума


1-1119688041
syte_ser78
2005-06-25 12:27
2005.07.18
Label по центру





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский