Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

кКак установить для выбранного принтер новый формат бумаги [D7, Win2k, WinXP]


КодеКорешь ©   (2005-08-01 14:13:00) 

Как установить для выбранного принтер новый формат бумаги.
Вот с помощью GetDeviceCaps можно получить вертикальный и горизонтальный размер бумаги в мм, а как установит новые размеры бумаги для выбранного принтера?


КодеКорешь   (2005-08-01 17:02:00) [1]

насколькая понял эти параметры меняются только для текущей копии объекта принтера?


Seeker   (2005-08-01 15:41:00) [2]

так

var
 Device : array[0..cchDeviceName-1] of Char;
 Driver : array[0..(MAX_PATH-1)] of Char;
 Port : array[0..32] of Char;
 hDMode : THandle;
 pDMode : PDevMode;
 sDev : array[0..32] of Char;
begin
 Printer.GetPrinter(Device,Driver,Port,hDMode);
 if hDMode <> 0 then
 begin
   pDMode :=GlobalLock(hDMode);
   if pDMode <> nil then
   begin
     pdMode^.dmOrientation :=2;
     // landscape
     pdMode^.dmPaperSize := DMPAPER_A3
     // (см. win32.hlp DEVMODE)
     GlobalUnlock(hDMode);
   end;
 end;
end;

или так
procedure TForm1.Button1Click(Sender: TObject);
var
 Device: array[0..255] of char;
 Driver: array[0..255] of char;
 Port: array[0..255] of char;
 hDMode: THandle;
 PDMode: PDEVMODE;
begin
 Printer.PrinterIndex := Printer.PrinterIndex;
 Printer.GetPrinter(Device, Driver, Port, hDMode);
 if hDMode <> 0 then begin
   pDMode := GlobalLock(hDMode);
   if pDMode <> nil then begin

    {Set to legal}
     pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
     pDMode^.dmPaperSize := DMPAPER_LEGAL;

    {Set to custom size}
     pDMode^.dmFields := pDMode^.dmFields or
       DM_PAPERSIZE or
       DM_PAPERWIDTH or
       DM_PAPERLENGTH;
     pDMode^.dmPaperSize := DMPAPER_USER;
     pDMode^.dmPaperWidth := 100 {SomeValueInTenthsOfAMillimeter};
     pDMode^.dmPaperLength := 100 {SomeValueInTenthsOfAMillimeter};

    {Set the bin to use}
     pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
     pDMode^.dmDefaultSource := DMBIN_MANUAL;

     GlobalUnlock(hDMode);
   end;
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо