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

Вниз

Пользовательский формат бумаги   Найти похожие ветки 

 
Programmix ©   (2004-12-28 15:36) [0]

Необходимо задать пользовательский формат бумаги принтера. У данного принтера (HP deskjet 3550) через диалог можно задать до 3-х пользовательских размеров бумаги. Как же сделать это программно? Попытки использовать поля     dmPaperSize, dmPaperWidth, dmPaperLength структуры PDeviceMode^ успеха не приносят, с DocumentProperties тоже не получается. Если кто-то знает как задать пользовательский формат бумаги в Delphi, приведите пожалуйста код,  а то устал "топтаться на месте". Помогите кто может.


 
Programmix ©   (2004-12-28 16:07) [1]

А в ответ - тишина...


 
Programmix ©   (2004-12-28 16:26) [2]

Да... Это вам не OnDblClick...


 
Programmix ©   (2004-12-28 16:40) [3]

Если надо подождать, я подожду...


 
Programmix ©   (2004-12-28 16:41) [4]

Может что-то в вопросе непонятно?


 
Programmix ©   (2004-12-28 16:48) [5]

Ну что? Никаких идей?


 
Семен Сорокин ©   (2004-12-28 16:59) [6]

var
 DeviceMode: THandle;
 DevMode: PDeviceMode;
 Device, Driver, Port: array[0..MAX_PATH] of Char;
 DriverInfo2: PDriverInfo2;
 DriverInfo2Size: DWORD;
 hPrinter: THandle;

Printer.GetPrinter(Device, Driver, Port, DeviceMode);
DevMode := PDevMode(GlobalLock(DeviceMode));
try
with DevMode^ do
 //устанавливаешь св-ва ...
finally
GlobalUnlock(DeviceMode);
end;
ResetDC(Printer.Handle, DevMode^);
OpenPrinter(Device, hPrinter, nil);
try
 GetPrinterDriver(hPrinter, nil, 2, nil, 0, DriverInfo2Size);
 GetMem(DriverInfo2, DriverInfo2Size);
 try
  GetPrinterDriver(hPrinter, nil, 2, DriverInfo2, DriverInfo2Size, DriverInfo2Size);
  StrPCopy(Driver, ExtractFileName(StrPas(DriverInfo2^.PDriverPath)));
 finally
  FreeMem(DriverInfo2, DriverInfo2Size);
 end;
finally
ClosePrinter(hPrinter)
end;
Printer.SetPrinter(Device, Driver, Port, DeviceMode);


 
Programmix ©   (2004-12-28 18:35) [7]

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


 
Семен Сорокин ©   (2004-12-28 18:45) [8]

dmFields := dmFields or DM_PAPERSIZE;
dmPaperSize := DMPAPER_USER;

???
приведи код заполнения св-в


 
Programmix ©   (2004-12-28 18:49) [9]

with DevMode^ do
 try
   dmFields :=dmFields + DM_PAPERSIZE + DM_PAPERWIDTH + DM_PAPERLENGTH;
   dmPaperSize := DMPAPER_FIRST;
   dmPaperWidth := NewPaperWidthMM; //1500
   dmPaperLength := NewPaperHeightMM; //1300
 finally
   GlobalUnlock(DeviceMode);
 end;


 
Programmix ©   (2004-12-28 18:53) [10]

извиняюсь не DMPAPER_FIRST а DMPAPER_USER (просто опечатка, в программе  именно DMPAPER_USER)


 
Семен Сорокин ©   (2004-12-28 18:54) [11]

dmPaperSize := DMPAPER_USER;
?


 
Programmix ©   (2004-12-28 18:55) [12]

см [10]


 
Семен Сорокин ©   (2004-12-28 19:00) [13]

попробуй так:

with DevMode^ do
try
  dmFields := dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH or DM_ORIENTATION and not DM_FORMNAME;
  dmPaperSize := DMPAPER_USER;
  dmPaperWidth := NewPaperWidthMM; //1500
  dmPaperLength := NewPaperHeightMM; //1300
  dmOrientation := DMORIENT_PORTRAIT; //DMORIENT_LANDSCAPE;
finally
  GlobalUnlock(DeviceMode);
end;


 
Programmix ©   (2004-12-28 19:06) [14]

dmOrientation меняется, размеры - нет


 
Семен Сорокин ©   (2004-12-28 19:09) [15]

вот еще нашел:

GetPrinter (ADevice, ADriver, APort, ADeviceMode);
SetPrinter (ADevice, ADriver, APort, 0); {force a Valid DevMode}
GetPrinter (ADevice, ADriver, APort, ADeviceMode); {Now
aDeviceMode is valid}


ЗЫ. Глянь сюда:
http://www.tamaracka.com/
я домой :)
С Уважением.


 
Programmix ©   (2004-12-28 19:10) [16]

Спасибо, всего доброго.



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

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

Наверх




Память: 0.48 MB
Время: 0.036 c
14-1104325636
alless
2004-12-29 16:07
2005.01.16
Трабл: Install Delphi 6


3-1102700928
Kot
2004-12-10 20:48
2005.01.16
Создание БД в InterBase


6-1098539929
Григорьев Антон
2004-10-23 17:58
2005.01.16
Как зависит время пересылки IP-пакета от его длины?


14-1104120730
Чеширский_Кот
2004-12-27 07:12
2005.01.16
"И скучно, и грустно, и некому руку подать..."


1-1104144168
lexis
2004-12-27 13:42
2005.01.16
Нужен хитрый chart





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