Страница 1 из 1
Нумерация новой страницы при печати 1 листа
Добавлено: 08 окт 2015, 08:25
jonyk
Добрый день!
Подскажите, есть ли возможность распечатать 6 листов отчета, который состоит из 1 листа, что бы на новом листе печатался номер 1, 2, 3 и до 6?
Спасибо.
Re: Нумерация новой страницы при печати 1 листа
Добавлено: 08 окт 2015, 09:49
HighAley
Здравствуйте.
Для этого вам надо отредактировать отчёт и сделать так, чтобы он генерировался с 6 одинаковыми страницами, на каждой из них вы можете указать свой номер.
Спасибо.
Re: Нумерация новой страницы при печати 1 листа
Добавлено: 08 окт 2015, 09:56
jonyk
Добрый день!
Я так понял - в отчете сделать 6 копий страницы? Этот вариант я рассматривал первоначально, но думал, что есть другие варианты.
Спасибо.
Re: Нумерация новой страницы при печати 1 листа
Добавлено: 08 окт 2015, 15:47
HighAley
Здравствуйте.
А какие варианты вы хотели? Можно попробовать печатать одну страницу, потом искать компонент на построенном отчёте для смены номера страницы и снова печатать. Эти действия надо будет повторить шесть раз. Плюс ещё возможно надо будет выбрать принтер и настройки печати. Думаю, этот вариант менее удобен, чем изначально предложенный.
Спасибо.
Re: Нумерация новой страницы при печати 1 листа
Добавлено: 25 ноя 2015, 16:07
Леонид
Добрый день!
Реализовывали подобную задачу. Суть такая, создаём в отчёте одну страницу с нужным дизайном. Добавляем PageFooterBand, на него кладём Text (в нашем примере он называется tbCustomPageNumber), устанавливаем выравнивание по правому и краю, и ставим текст "1" (т.е. первая страница).
После этого в событии EndRender объекта самого отчёта пишем примерно такой код:
Код: Выделить всё
const byte maxPageQuantity = 5;
string ctrlName = "tbCustomPageNumber"; // our textbox name
byte pageCounter = 2;
for (byte i = 0; i < maxPageQuantity; i++)
{
StiPage page = (StiPage)this.RenderedPages[0].Clone(); // clone page
if (page.Components.IndexOf(ctrlName) >= 0)
{
if (page.Components[ctrlName] is StiText)
{
StiText ctrl = (StiText)page.Components[ctrlName]; // get text control reference
ctrl.Text = pageCounter.ToString(); // set page counter
pageCounter++; // increase counter
}
}
this.RenderedPages.Add(page); // add page
}
Собственно всё, задача решена. Если кому понадобится, максимально простой рабочий пример во вложении.
Re: Нумерация новой страницы при печати 1 листа
Добавлено: 26 ноя 2015, 10:59
HighAley
Здравствуйте.
Спасибо за ваше решение. Оно показывает, что одну и ту же задачу можно решить многими способами.
Ваше решение получилось самым удачным.
Спасибо.