Главная страница
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.115 c
9-1096632596
Xenon
2004-10-01 16:09
2005.01.16
Вопрос про игры


14-1103785132
Архитектор
2004-12-23 09:58
2005.01.16
Стоимость официальной Delphi от Borland-а


1-1104212473
N0thing
2004-12-28 08:41
2005.01.16
Как получить код символа?


1-1104410237
Mishenka
2004-12-30 15:37
2005.01.16
DblClick в ListView


8-1097262333
Yegorchic
2004-10-08 23:05
2005.01.16
Загрузить юч в Delphi...