Нумерация новой страницы при печати 1 листа

Обсуждение Stimulsoft Reports.NET
Ответить
jonyk
Сообщения: 41
Зарегистрирован: 19 апр 2010, 12:41

Нумерация новой страницы при печати 1 листа

Сообщение jonyk »

Добрый день!
Подскажите, есть ли возможность распечатать 6 листов отчета, который состоит из 1 листа, что бы на новом листе печатался номер 1, 2, 3 и до 6?
Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Нумерация новой страницы при печати 1 листа

Сообщение HighAley »

Здравствуйте.

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

Спасибо.
jonyk
Сообщения: 41
Зарегистрирован: 19 апр 2010, 12:41

Re: Нумерация новой страницы при печати 1 листа

Сообщение jonyk »

Добрый день!
Я так понял - в отчете сделать 6 копий страницы? Этот вариант я рассматривал первоначально, но думал, что есть другие варианты.
Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Нумерация новой страницы при печати 1 листа

Сообщение HighAley »

Здравствуйте.

А какие варианты вы хотели? Можно попробовать печатать одну страницу, потом искать компонент на построенном отчёте для смены номера страницы и снова печатать. Эти действия надо будет повторить шесть раз. Плюс ещё возможно надо будет выбрать принтер и настройки печати. Думаю, этот вариант менее удобен, чем изначально предложенный.

Спасибо.
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: Нумерация новой страницы при печати 1 листа

Сообщение Леонид »

Добрый день!

Реализовывали подобную задачу. Суть такая, создаём в отчёте одну страницу с нужным дизайном. Добавляем 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
}
Собственно всё, задача решена. Если кому понадобится, максимально простой рабочий пример во вложении.
Вложения
Тестовый отчёт.mrt
(5.55 КБ) 358 скачиваний
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Нумерация новой страницы при печати 1 листа

Сообщение HighAley »

Здравствуйте.

Спасибо за ваше решение. Оно показывает, что одну и ту же задачу можно решить многими способами.
Ваше решение получилось самым удачным.

Спасибо.
Ответить