Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi, WinXP установки принтера, доступ к свойствам принтера 
:(
    Опции темы
Shadow_LV
Дата 22.2.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.2.2005

Репутация: нет
Всего: нет



хочеться чтоб программа запоминала свои установки принтера (качество/размер и ориентация бумаги/источник бумаги и т.д.) отличные от установок по умолчанию.

в данном случае принтер HP laserjet 5200

не могу найти как к этим установкам подобраться...

можно ли их прочитать/установить через свойства/методы
TPrinter
TPrinterDialog

в TPrinter если не ошибаюсь была только ориентация листа.

или потребуются некие мегасложные манипуляцуии?

так-же буду благодарен и за линки на мощные статьи по работе с принтером в дельфях
PM MAIL   Вверх
Snowy
Дата 22.2.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Читай доку по TPrintDialog. Все вышеперечисленное - его свойства.
PM MAIL   Вверх
Alex
Дата 23.2.2005, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Код

uses
   IniFiles
 , Printers
;

....

procedure SavePrnParms(FileName: TFileName; SectionName: string;
 Prn: TPrinter);
// Процедура записи установок принтера в ини файл
// FileName - имя ини файла
// SectionName - имя секции, в которую следует производить запись
// Prn - принтер, с которого следует производить запись в файл
var
 ADevice, ADriver, APort: array[0..255] of char;
 ADeviceMode: THandle;
 DevMode: PDevMode;
begin
 with TIniFile.Create(FileName) do try
   WriteString (SectionName, 'PrinterName' , Prn.Printers[Prn.PrinterIndex]);
   WriteInteger(SectionName, 'PrinterIndex', Prn.PrinterIndex              );
   WriteInteger(SectionName, 'Copies'      , Prn.Copies                    );
   WriteBool   (SectionName, 'Orientation' , (Prn.Orientation = poPortrait));
   WriteString (SectionName, 'Title'       , Prn.Title                     );
   Prn.GetPrinter(ADevice, ADriver, APort, ADeviceMode);
   DevMode:= GlobalLock(ADeviceMode);
   if Assigned(DevMode) then with DevMode^ do try
     WriteInteger(SectionName, 'dmSpecVersion'     , dmSpecVersion     );
     WriteInteger(SectionName, 'dmDriverVersion'   , dmDriverVersion   );
     WriteInteger(SectionName, 'dmOrientation'     , dmOrientation     );
     WriteInteger(SectionName, 'dmPaperSize'       , dmPaperSize       );
     WriteInteger(SectionName, 'dmFields'          , dmFields          );
     WriteInteger(SectionName, 'dmPaperWidth'      , dmPaperWidth      );
     WriteInteger(SectionName, 'dmScale'           , dmScale           );
     WriteInteger(SectionName, 'dmCopies'          , dmCopies          );
     WriteInteger(SectionName, 'dmColor'           , dmColor           );
     WriteInteger(SectionName, 'dmDuplex'          , dmDuplex          );
     WriteInteger(SectionName, 'dmYResolution'     , dmYResolution     );
     WriteInteger(SectionName, 'dmTTOption'        , dmTTOption        );
     WriteInteger(SectionName, 'dmCollate'         , dmCollate         );
     WriteInteger(SectionName, 'dmLogPixels'       , dmLogPixels       );
     WriteString (SectionName, 'dmFormName'        , dmFormName        );
     WriteInteger(SectionName, 'dmBitsPerPel'      , dmBitsPerPel      );
     WriteInteger(SectionName, 'dmPelsWidth'       , dmPelsWidth       );
     WriteInteger(SectionName, 'dmPelsHeight'      , dmPelsHeight      );
     WriteInteger(SectionName, 'dmDisplayFlags'    , dmDisplayFlags    );
     WriteInteger(SectionName, 'dmDisplayFrequency', dmDisplayFrequency);
     WriteInteger(SectionName, 'dmICMMethod'       , dmICMMethod       );
     WriteInteger(SectionName, 'dmMediaType'       , dmMediaType       );
     WriteInteger(SectionName, 'dmDitherType'      , dmDitherType      );
     WriteInteger(SectionName, 'dmICCManufacturer' , dmICCManufacturer );
     WriteInteger(SectionName, 'dmICCModel'        , dmICCModel        );
     WriteInteger(SectionName, 'dmPanningWidth'    , dmPanningWidth    );
     WriteInteger(SectionName, 'dmPanningHeight'   , dmPanningHeight   );
     WriteInteger(SectionName, 'dmDefaultSource'   , dmDefaultSource   );
     WriteInteger(SectionName, 'dmPrintQuality'    , dmPrintQuality    );
   finally
     GlobalUnlock(ADeviceMode);
   end;
 finally
   Free;
 end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 if not PrintDialog1.Execute then Exit;
   SavePrnParms(ExtractFilePath(ParamStr(0)) + 'Print.ini', 'Prn', Printer);
end;



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Marriage
Дата 28.2.2005, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Есть компонент TFormStorage. Он запоминает в реестре состояние всех компонентов.
Вот и все. Таким образом добьешься того, чтоб программа запоминала установки принтера.





Это сообщение отредактировал(а) Marriage - 1.3.2005, 21:24


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Shadow_LV
Дата 6.3.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.2.2005

Репутация: нет
Всего: нет



Alex,

спасибо огроменное, вроде получилось smile

только абсолютно не понятно как это работает smile
не подскажешь где можно почитать об этом загадочном GlobalLock();
в хелпе ничего не нашел...


Marriage,

где растет этот компонент?
PM MAIL   Вверх
Alex
Дата 6.3.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Цитата(Shadow_LV @ 6.3.2005, 15:39)
не подскажешь где можно почитать об этом загадочном GlobalLock();
в хелпе ничего не нашел...

http://www.podgoretsky.com/ftp/Docs/Delphi...GlobalLock.html
Цитата(Shadow_LV @ 6.3.2005, 15:39)
спасибо огроменное, вроде получилось 

только абсолютно не понятно как это работает

На самом деле многое из этого было собрано по крупицам из разных источников и изучением исходников VCL. В программе на продажу срочно нужно было, это организовать пришлось сидеть и делать. Что именно не понятно?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.