Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
3-1231878365
serko
2009-01-13 23:26
2009.12.27
Вместо русских букв вопросительные знаки...


15-1256506209
Юрий
2009-10-26 00:30
2009.12.27
С днем рождения ! 26 октября 2009 понедельник


15-1256487519
Kolan
2009-10-25 19:18
2009.12.27
Статья «Обобщённое программирование(generics) в Delphi 2009 ...»


15-1256651126
Ьу
2009-10-27 16:45
2009.12.27
Как линейно интерполировать значение между тремя точками.


15-1256309335
YurikGL
2009-10-23 18:48
2009.12.27
Тупо списали с видеокамеры, теперь оно не играет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский