Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2017-02-02 17:50:57 ЛС | профиль | цитата
grial1964 писал(а):
Параметры принтеров находятся в ветке реестра
Зачем? Зайти в папку "Принтеры" в Панели управления, правой кнопкой по принтеру - "Настройка печати" и всё задаётся по-умолчанию.

nesco, в том месте, где ты задаёшь количество копий - это количество нужно для диалога. Затем реальное количество должно получится как пользователь задаёт в диалоге.
Для того, чтобы задать самому количество копий без диалога - нужно установить прямо в параметрах принтера, типа

procedure THIPrinter._work_doPrint;
var re:PControl;
dt:TData;
cm:TRect;
begin
with Printer{$ifndef F_P}^{$endif} do
begin
Title := _prop_Title;
Copies := 100; // <====================
if System.Assigned(_data_Text.Event) or not System.Assigned(_data_RichEdit.Event) then
begin
BeginDoc;
WriteLn(ReadString(_Data,_data_Text,''));
_hi_OnEvent(_event_onPrint, integer(Handle));
EndDoc;
end
else
begin
dt := ReadData(_Data,_data_RichEdit,nil);
if Dt.sdata = 'RichEdit' then
begin
re := pointer(Dt.idata);
RE_Print(re);
end;
end;
end;
end;

Соответственно, для метода doPrint можно добавить свойства (в дополнение к Title): Copies, Orientation, Margins. Тогда метод будет выполнять то, на что и расчитан - запускать на печать без диалога, но с возможностью пользователю самому задать все параметры.

Там, если посмотреть в TPrinter.fDeviceMode - можно ещё много параметров задать, но наверное, нужно расширять TPrinter.
карма: 26

1
Голосовали:sashaoli
Редактировалось 1 раз(а), последний 2017-02-02 18:01:05