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

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

Установка принтера по умолчанию [D7, Win2k]


bob5 ©   (2004-04-07 20:36:00) 

Необходимо программно изменить принтер по умолчанию.
ели есть код буду рад, но буду благодарен и общему алгоритму.
По хелпам не очень то и понятно, куча структур, куча процедур и функций , а в итоге не понятно что все таки с этим делать.

Спасибо.


bob5   (2004-04-15 16:37:00) [1]

Ссылка от Adder очень привлекательная разберусь и отвечу


panov   (2004-04-14 22:31:00) [2]

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=7583


Adder   (2004-04-14 21:03:00) [3]

http://support.microsoft.com/default.aspx?scid=kb;en-us;246772


bob5   (2004-04-14 20:13:00) [4]

>panov ©   (14.04.04 19:51) [10]

Век живи век учись! Спасибо огромное, проглядел эту строчку
в вашем ответе. Теперь все работает.

Но все таки, это так сказать обходной путь, может кто знает
как это сделать с помощью окнов


panov   (2004-04-14 19:51:00) [5]

>bob5   (14.04.04 18:12) [9]
после строки

WA.ActivePrinter := Combobox1.Text;

MSWord печатат на выбранный принтер.

Ты пример запусти и попробуй.


bob5   (2004-04-14 18:12:00) [6]

to panov:
Я так свой отчет и вывожу, но в параметрах PrintOut не возможно
указать на какой принтер печатать (печатает на принтер по умолчанию в системе)

to tesseract:
К сожалению не всегда удобно ко всем прочим окнам открываемым user-ом  еще и открывать диалог настройки принтера. интерфейс и так достаточно нагружает user-а.

to ALL:
Но все таки Билл Гейтс со своими окнами хоть и коряво но должен уметь устанавливать Default Printer и кто-то в конференции знает как это делать. Я хочу разобраться с этим вопросом раз и навсегда :) и тогда можно было-бы поместить этот вопрос в FAQ
и больше никогда его не обсуждать. Я пол года не читал этой конференции но вопросы какими были такими и остались. Мне кажется что если раз и навсегда разобраться например как выключать и включать клавиатуру или например несколько вариантов
как работать с Com портом и поместить это в FAQ, то человек познакомившись так сказать со "стандартным" вариантом решения проблемы свои заморочки решал бы более качественно и более четко
ставил бы вопросы в конференции, что значительно бы повысило "рейтинг" и сайта в целом и конференции в частности :).
Все таки жду ответа на свой вопрос.


tesseract   (2004-04-14 10:05:00) [7]

А почему-бы не вызвать стандартный диалог настройки принтера???


panov   (2004-04-13 22:02:00) [8]

procedure TForm1.Button1Click(Sender: TObject);
var
 WA:TWordApplication;
 FName: OLEVariant;
 WPrinter: OLEVariant;
begin
 WA := TWordApplication.Create(nil);
 FName := 'c:\test.doc';
 wa.Documents.Open(FName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyPar am,EmptyParam,EmptyParam);

 WA.ActivePrinter := Combobox1.Text;

 WA.ActiveDocument.PrintOut(EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,Empty Param,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
 WA.Free;
end;


bob5   (2004-04-13 21:04:00) [9]

К моему сожалению этот код понимает только Delphi, а
Word говорит что принтер по умолчанию не менялся.


panov   (2004-04-08 21:49:00) [10]

После того, как пользователь выбрал нужный принтер, выполни
Printer.PrinterIndex := Combobox1.ItemIndex;

Дальше печатай как обычно.


bob5   (2004-04-08 21:17:00) [11]

Понял! Описываю ситуацию: В ComboBox закачены принтера из
TPrinter. Пользователь выбирает любой принтер и загруженный
по OLE Automation MS Word должен на этот принтер напечатать
отчет мною сформированный.


panov   (2004-04-08 20:11:00) [12]

>bob5   (08.04.04 19:04) [2]

Из программы можно печатать на любой принтер, не обязательно на тот, который установлен "по-умолчанию".


bob5   (2004-04-08 19:04:00) [13]

Спасибо большое (Этот вариант есть в FAQ), но мне бы хотелось понять как это делается APi, я залез в TPrinter но то ли я тупой
то ли предмет слишком сложный , но я так и не понял почему нельзя
было сделать нпример Printers.PrinterIndex := 5. в Windows SDK
Help тоже все как-то мудрено есть все кроме как установить принтер по умолчанию


User_Name   (2004-04-08 13:33:00) [14]

Я делаю так

WriteProfileString('windows','device','HP LazerJet 1200 Series PCL 6, HP LazerJet 1200 Series PCL 6, lpt1:');

SendMessage(HWND_Broadcast, WM_WININICHANGE,0,0);


Наверх

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