Вверх ↑
Этот топик читают: Гость
Ответов: 18
Рейтинг: 0
#1: 2017-01-27 16:58:24 ЛС | профиль | цитата
Добрый день. Подскажите как можно задать количество копий при печати. Циклы не подходят, через настройку принтера тоже не годится. Очень хотелось бы в компоненте hiPrinter еще одну точку видеть - количество копий.
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 204
Рейтинг: 2
#2: 2017-01-27 19:10:23 ЛС | профиль | цитата
grial1964 писал(а):
Циклы не подходя


Естественно что циклы не подходят, где вы видели принтер печатающий со скоростью 1 страница в мс.???
Пока ваш принтер включится, разогреется примет все данные на печать, отпечатает страницу пройдет минимум секунд 5-10! И потом печать каждой страници на среднем лазерном принтере 1,5 - 3 сек! Так что если выставить таймер с задержкой в 1500 мс. Печать будет ровной.
Это конечно не совсем то, но при отсутствии точки кол-ва страниц вполне спасает!

как вариант:

Add(MainForm,2953706,98,98)
{
Width=359
Height=257
}
Add(Printer,1540615,504,203)
{
link(Text,15483007:Text,[])
}
Add(Memo,15483007,504,133)
{
Left=10
Top=20
Width=305
Height=125
Strings=#41:Съешь ещё этих мягких французских булок, |15:да выпей же чаю|
}
Add(Label,13388471,98,49)
{
Left=15
Top=160
Width=70
Height=17
Caption="кол.во копий"
}
Add(Edit,2074439,224,149)
{
Left=105
Top=160
Width=40
Text="3"
DataType=1
}
Add(Button,8394074,112,203)
{
Left=155
Top=155
Width=160
Height=50
Caption="Print"
link(onClick,6593440:doEvent1,[])
}
Add(Timer,12600720,434,203)
{
Interval=1500
Enable=1
AutoStop=1
Point(doAutoStop)
link(onTimer,1540615:doPrint,[])
}
Add(DoData,3841184,224,210)
{
link(onEventData,12600720:doAutoStop,[(278,216)(278,223)])
link(Data,2074439:Text,[])
}
Add(Hub,6593440,182,203)
{
link(onEvent1,16078791:doDeferredEvent,[(262,209)(262,188)])
link(onEvent2,3841184:doData,[])
}
Add(DeferredEvent,16078791,329,182)
{
Delay=21
InData=0
link(onDeferredEvent,12600720:doTimer,[(397,188)(397,209)])
}

Редактировалось 2 раз(а), последний 2017-01-27 19:11:56
карма: 1

0
Ответов: 18
Рейтинг: 0
#3: 2017-01-27 20:15:32 ЛС | профиль | цитата
Спасибо за примерчик. Печать идет на принтер этикеток. Скорость печати 2-3 этикетки в секунду, а вот загружаются данные медленно, в результате время печати увеличивается во мног раз. И все мои потуги облегчить себе жизнь застряли на отсутствии точки количества...
карма: 1

0
Ответов: 204
Рейтинг: 2
#4: 2017-01-27 21:53:06 ЛС | профиль | цитата
Хмм, ну если так, то боюсь вам и вправду без добавления точки "кол.во страниц", в компонент, не обойтись!
Тут вам может помогут только кто-то из старожил, попробуйте обратится на прямую. Через ЛС. Авось помогут! )))
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#5: 2017-01-27 22:29:36 ЛС | профиль | цитата
grial1964 писал(а):
Очень хотелось бы в компоненте hiPrinter еще одну точку видеть - количество копий

Эту точку вывести не реально, но вот использовать точку doPrintDlg вместо точки doPrint вполне можно, там как раз есть установка кол-ва страниц.
карма: 22

0
Ответов: 204
Рейтинг: 2
#6: 2017-01-27 22:35:41 ЛС | профиль | цитата
nesco писал(а):

Эту точку вывести не реально, но вот использовать точку doPrintDlg вместо точки doPrint вполне можно, там как раз есть установка кол-ва страниц.


Я так понимаю человек пытается автоматизировать процесс. На точке doPrintDlg в диологовом окне придется каждый раз в ручную выставлять кол.во страниц и стартовать печать.
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#7: 2017-01-27 22:36:42 ЛС | профиль | цитата
На точке doPrintDlg в диологовом окне придется каждый раз в ручную выставлять кол.во страниц и стартовать печать.

С этой реализацией компонента пока только так.
Я посмотрю, может что-то удастся сделать

Редактировалось 2 раз(а), последний 2017-01-27 22:47:50
карма: 22

0
Ответов: 18
Рейтинг: 0
#8: 2017-01-27 22:47:28 ЛС | профиль | цитата
Совершенно верно, нужно автоматизировать процесс. Моя програмка берет накладную в ексель парсит . выбирает нужные данные из базы и печатает нужные штрихэтикетки с нужным количеством. все работает чудесно но печатает очень долго. Если нельзя с этим компонентом решить проблему, может подскажете в каком направлении мне двигаться?
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#9: 2017-01-27 22:49:38 ЛС | профиль | цитата
grial1964 писал(а):
Если нельзя с этим компонентом решить проблему, может подскажете в каком направлении мне двигаться?

Если проблема только в установке кол-ва страниц печати, то я попытаюсь что-нибудь сделать. Если получится, правда, но будем наедятся, что получится.
карма: 22

0
Ответов: 18
Рейтинг: 0
#10: 2017-01-27 23:05:45 ЛС | профиль | цитата
Огромное спасибо за внимание. Программа готовая, все работает, но пользуюсь только когда есть достаточно времени на распечатку. А так по старинке, в родной принтеровской загружаю заготовленный макет для каждой позиции, много движений но блин в конечном итоге получаетья намного быстрее. Спасибо за помощь, загвоздка действительно только в этой точке.
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#11: 2017-01-27 23:49:13 ЛС | профиль | цитата
Добавил метод doCopies. Надо бы проверить на действующем принтере. Данные заносятся из потока при обращении к методу.
Использовать верхнюю точку не получится прямо из метода doPrint, тк она перекроет установки диалога при его использовании.

Редактировалось 1 раз(а), последний 2017-01-27 23:52:20
карма: 22

0
Ответов: 204
Рейтинг: 2
#12: 2017-01-28 00:17:42 ЛС | профиль | цитата
nesco писал(а):
Надо бы проверить на действующем принтере


Проверил, не работает! Выдаёт лишь одну копию.
хотя если подавать сигнал на метод doPrintDlg, то в открывшемся диалоговом окне видно что количество копий выставляется.


Add(MainForm,7302977,217,364)
{
Width=359
Height=257
}
Add(Printer,1540615,623,469)
{
Point(doCopies)
Point(doPrintDlg)
link(Text,15483007:Text,[])
}
Add(Memo,15483007,623,399)
{
Left=10
Top=20
Width=305
Height=125
Strings=#41:Съешь ещё этих мягких французских булок, |15:да выпей же чаю|
}
Add(Label,13388471,217,315)
{
Left=15
Top=160
Width=70
Height=17
Caption="кол.во копий"
}
Add(Edit,2074439,343,415)
{
Left=105
Top=160
Width=40
Text="3"
DataType=1
}
Add(Button,8394074,231,469)
{
Left=155
Top=155
Width=160
Height=50
Caption="Print"
link(onClick,6593440:doEvent1,[])
}
Add(DoData,3841184,343,476)
{
Data=Integer(3)
link(onEventData,1540615:doCopies,[])
link(Data,2074439:Text,[])
}
Add(Hub,6593440,301,469)
{
link(onEvent1,16078791:doDeferredEvent,[(381,475)(381,454)])
link(onEvent2,3841184:doData,[])
}
Add(DeferredEvent,16078791,427,448)
{
Delay=21
InData=0
link(onDeferredEvent,1540615:doPrint,[(552,454)(552,475)])
}

карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#13: 2017-01-28 00:21:28 ЛС | профиль | цитата
ogrif писал(а):
Проверил, не работает! Выдаёт лишь одну копию.

А через диалог печатает нормальное количество копий? А принтер точно не виртуальный, типа ImagePrint или PdfCreator? Такие принтеры не печатают больше одной копии. Нужен именно бумажный принтер.
ogrif писал(а):
в открывшемся диалоговом окне видно что количество копий выставляется

Так и должно быть, тк при инициализации диалога ему присваивается переменная копий, вот почему я и спросил про печать через диалог.

Редактировалось 4 раз(а), последний 2017-01-28 00:29:09
карма: 22

0
Ответов: 18
Рейтинг: 0
#14: 2017-01-28 00:31:28 ЛС | профиль | цитата
Сильно не пинайте, на форум первый раз обратился за помощью, подскажите где взять обновленный компонент
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#15: 2017-01-28 00:32:49 ЛС | профиль | цитата
grial1964 писал(а):
подскажите где взять обновленный компонент

На компоненте в палитре нажать ПКМ -> Обновление с SVN -> Обновить
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)