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.