Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
4-1100444311
Doc-N
2004-11-14 17:58
2005.01.16
Изменение таблици импорта


1-1104301279
Тимур
2004-12-29 09:21
2005.01.16
ListView.CustomSort


14-1104181424
Кудесник
2004-12-28 00:03
2005.01.16
Ура!!! Я на GPRS!!!


3-1103107737
Миша
2004-12-15 13:48
2005.01.16
многострочный вывод данных в отчет


1-1103988207
begin...end
2004-12-25 18:23
2005.01.16
Виртуальный ListView