Главная страница
    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
10-1079426339
WondeRu
2004-03-16 11:38
2005.01.16
Insert ActiveX Forms in runtime


14-1103872857
Ученик
2004-12-24 10:20
2005.01.16
Компоненты для Delphi 8, 2005


14-1104084556
Vasya.ru
2004-12-26 21:09
2005.01.16
эх... Вспомнил свой первый компьютер... Ностальгия....


1-1104005174
ka
2004-12-25 23:06
2005.01.16
составление отчетов для печати из зависимых таблиц


1-1104236940
stud
2004-12-28 15:29
2005.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский