Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2012, 21:48   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Печать RichEdit без диалога печати

Добрый вечер!
Мне нужно отправить содержимое RichEdit на печать, но не используя диалог печати, т.е. чтобы пользователь нажал только на кнопку и содержимое RichEdit сразу было отправлено на печать. Нашел код, для определения установленных принтеров:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Assign(Printer.Printers);
end;
или так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
m: TRegistry;
i: integer;
l: TstringList;
s: string;
begin
m := TRegistry.Create; l := TStringList.Create;
s := '\System\CurrentControlSet\Control\Print\Printers';
m.RootKey := HKEY_LOCAL_MACHINE;
m.OpenKey(s, false);
m.GetKeyNames(l); // получаем список принтеров
m.CloseKey;
ListBox1.Items.Clear;
for i := 0 to l.Count - 1 do begin
m.OpenKey(s + '\' + l[i], false); 
ListBox1.Items.Add(m.ReadString('Name'));
m.CloseKey;
end;
m.Free;
l.Free;
end;
В связи с этим есть пара вопросов:
1. Можно ли осуществить такую печать?
2. Как определить из установленных принтеров какой из них установлен по умолчанию? Чтобы потом можно было легко сделать пункт №1.
3. Будет ли код выше корректно работать в Windows 7?
Дома нет возможности проверить, т.к. нет принтера, только на работе смогу. Прошу помощи.


--------------
Хорошо, оба варианта по определению установленных принтеров, работают хорошо.
Вопрос тогда остается такой: как отправить содержимое RichEdit на печать, заранее указав на какой принтер отправлять выбрав его из списка найденных принтеров? Чтобы сразу начиналась печать, без диалогов о печати.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 11.11.2012 в 21:53.
artemavd вне форума Ответить с цитированием
Старый 11.11.2012, 22:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как определить из установленных принтеров какой из них установлен по умолчанию? Чтобы потом можно было легко сделать пункт №1.
Насколько я понимаю, если просто посылать на печать - она будет идти на принтер по умолчанию
Цитата:
Дома нет возможности проверить
Виртуальные принтера ставь. в Севене кстати есть XPS принтер. проинсталь его из компонентов Винды и пользуйся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2012, 22:42   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Насколько я понимаю, если просто посылать на печать - она будет идти на принтер по умолчанию
А диалог настройки печати будет появляться?
Цитата:
в Севене кстати есть XPS принтер. проинсталь его из компонентов Винды и пользуйся.
Да его вроде не надо ставить, он уже установлен в системе и если реальный принтер не подключен, то открывается диалог сохранения в XPS файл.
Что произойдет, если выполнить этот код и в системе есть установленный принтер:
Код:
procedure TMainForm.sBitBtn1Click(Sender: TObject);
begin
 sRichEdit1.Print();
end;
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 11.11.2012 в 22:45.
artemavd вне форума Ответить с цитированием
Старый 11.11.2012, 23:15   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У меня просто в очередь на печать ставит к умолчательному принтеру. Кроме принтера еще пару виртуальных устройств. Не предлагает сделать выбор и поменять настройки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2012, 23:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А диалог настройки печати будет появляться?
А это от принтера зависит. Виртуальники типа XPS конечно диалог покажут, надо же им спрашивать куда файл сохранять. А обычные принтера должны сразу печатнуться
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2012, 23:49   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Хз, завтра попробую на работу отправить на печать на принтер по умолчанию, посмотрим что будет.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RichEdit, установка курсора и печать по этой позиции [newbie quest.]] Hydros C++ Builder 0 25.05.2012 09:14
как выставить поля при печати из richedit buket Общие вопросы Delphi 5 10.11.2010 13:42
Печать из RichEdit Claster Помощь студентам 2 02.11.2008 18:08
Процедура печать и настройки печати _Solomon_ Помощь студентам 2 21.05.2007 09:31