Страница 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
Здравствуйте.

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

Спасибо.