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

Вниз

Вызов диалога настроек печати   Найти похожие ветки 

 
Jaroslight ©   (2009-11-04 00:58) [0]

Народ, подскажите, пожалуйста. На форме расположена кнопка "Свойства", нажатие которой должно вызвать окно настроек печати, точно такое же какое вызывается через Панель управления - Устройства и принтеры - Настройка печати. Как это сделать программно в Дельфи?


 
Германн ©   (2009-11-04 01:17) [1]


> точно такое же какое вызывается через Панель управления
> - Устройства и принтеры

У меня в XP в панели управления нет "Устройства и принтеры".


 
TIF ©   (2009-11-04 06:34) [2]

> У меня в XP в панели управления нет "Устройства и принтеры".

+1
Это уже речь про Vista/7

> Устройства и принтеры - Настройка печати

Эмм, ну надо было хоть поточнее рассказать, где там настройку печати искать. Скриншотик бы не помешал.
Раз уж речь про XP, то вот и скриншот из этой ОС:
http://pinpic.ru/img/10468.html
Оно? :)

Тогда см. в MSDN Library описание функций AdvancedDocumentProperties и DocumentProperties:
http://msdn.microsoft.com/en-us/library/dd183350%28loband%29.aspx
http://msdn.microsoft.com/en-us/library/dd183576%28loband%29.aspx


 
Jaroslight ©   (2009-11-04 10:55) [3]

TIF
Да, речь шла о Windows 7. Вы правильно показали, окно настройки печати вызывается из контекстного  меню, щёлкая правой кнопкой мыши по иконке соответствующего принтера в списке устройств через панель управления или меню Пуск.  Но здесь без разницы, мне нужно вызвать диалоговое окно настройки печати любого принтера из списка установленных в системе, без установки на форму компонента PrintDialog1. В отличие от PrintDialog1, моя модальная форма Печать должна содержать только GroupBox "Принтер", такой же как в PrintDialog1, а остальные GroupBox"ы отсутствуют. А именно, один ComboBox1 "Принтер", одна кнопка "Свойства", два Label"а под статус и тип. Помимо этого, мне хотелось бы узнать как выводить информацию о статусе (Готов / Занят) и типе.

Если существует другой вариант, например, взять тот PrintDialog1 и удалить из него ненужные мне GroupBox"ы, а оставить только Принтер. Если есть, подскажите.


 
Jaroslight ©   (2009-11-04 11:05) [4]


> см. в MSDN Library описание функций AdvancedDocumentProperties
> и DocumentProperties:
> http://msdn.microsoft.com/en-us/library/dd183350%28loband%29.
> aspx
> http://msdn.microsoft.com/en-us/library/dd183576%28loband%29.
> aspx


Спасибо за статьи, но мне бы примеры использования этих функций. Какие параметры, какие значения нужно ввести и прочее.


 
oldman ©   (2009-11-04 11:29) [5]


> На форме расположена кнопка "Свойства", нажатие которой
> должно вызвать окно настроек печати


То есть TPrinterSetupDialog не устраивает?


 
Jaroslight ©   (2009-11-04 11:54) [6]


> То есть TPrinterSetupDialog не устраивает?


Не совсем. На форме должен быть только GroupBox Принтер и плюс мои собственные.


 
Anatoly Podgoretsky ©   (2009-11-04 12:07) [7]

> Jaroslight  (04.11.2009 10:55:03)  [3]

Можешь конечно взять за основу, а можешь глубже влезть, WinAPI содержит достаточное количество функций, что бы сделать, что угодно. Единственная проблема сложность.
Для начала посмотри набор функций Printing and Print Spooler Functions и рядом и реши как быть.


 
Jaroslight ©   (2009-11-06 22:49) [8]

Спасибо, народ, что участвовали в решении моей проблемы. Особую благодарность TIFу за то что дал ссылку на API функции DocumentProperties.

Слава богу, я всё-таки добился своей цели. Хотя в готовом виде решения я не находил, мне удалось написать скромный код.

Дело так, как вызвать диалог настройки печати, который поставляется с драйвером принтера. По умолчанию, он вызывается через Панель управления - устройства (менеджер устройств, устройства и принтеры в Win 7 и т.д.) правой кнопкой мыши из контекстного меню. Другой способ. Из любого приложения, где есть компонент PrintDialog, нажав кнопку Свойства.

Сейчас я предлагаю свой способ. Его хорошо использовать, если тебе не устраивает PrintDialog или PrintSetupDialog, и предпочитаешь создать свою форму печати, на которую размещаешь кнопку, нажимая которую оп-па открывается то самое окно настройки печати любого принтера (если есть также ComboBox со списком принтеров).

Вот и желанный код:

procedure TF_PrintDlg.FormCreate(Sender: TObject);
begin
 Combobox1.Items.Assign(Printer.Printers);
 Combobox1.Text := Printer.Printers[Printer.PrinterIndex];
end;

procedure TF_PrintDlg.PrintSettingsClick(Sender: TObject);
const
 Defaults: TPrinterDefaults = (pDatatype: nil; pDevMode: nil;
 DesiredAccess: STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_USE);
var
 PrintName: PChar;
 hPrinter: THandle;
 Device: array[0..1024] of char;
 Driver: array[0..1024] of char;
 Port: array[0..1024] of char;
 hDeviceMode: THandle;
 devmode: PDevMode;
begin
 Printer.PrinterIndex := Combobox1.ItemIndex;
 PrintName := PChar(Combobox1.Text);
 Printer.GetPrinter(Device,Driver,Port,hDeviceMode);
 if not OpenPrinter(@Device, hPrinter, @Defaults) then
   RaiseLastWin32Error;
 try
   DocumentProperties(F_PrintDlg.ParentWindow,hPrinter,PrintName,
   devmode^,devmode^,DM_IN_PROMPT);
 finally
   ClosePrinter(hPrinter);
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1257412567
kyn66
2009-11-05 12:16
2009.12.27
Сохранение параметров программы одним числом


8-1201295650
kblc
2008-01-26 00:14
2009.12.27
GDI+ и изображения


2-1256271770
Delphi2020
2009-10-23 08:22
2009.12.27
Проблема с сохранением Raw в exe


15-1256455692
Киря
2009-10-25 10:28
2009.12.27
Треугольник


2-1257442024
V
2009-11-05 20:27
2009.12.27
TBitmap и Array of Byte