Страница 1 из 1

Отмена формирования отчета

Добавлено: 16 май 2011, 07:30
Funix
Добрый день.

Вопрос вроде как простой, но что-то не получается в документации найти ответ:
Каким образом можно отменить формирование отчета?

Поясню свою ситуацию.
Перед построением отчета вызывается форма запроса параметров из моей библиотеки (DLL).
Хотелось бы, чтобы при нажатии на кнопку "Отмена" на этой форме отчет, соответственно, не формировался.
В коде вызова библиотеки я после закрытия формы имею информацию какой кнопкой была закрыта форма,
остается только (при необходимости) отменить формирование отчета.
Интуитивно хочется набрать что-нибудь вроде:

Код: Выделить всё

Report.Cancel();
\\ или
Report.Exit();
но ничего похожего найти не могу.
Понимаю, что ответ где-то на поверхности, но в понедельник до обеда мозг еще не "прогрелся"... :blush:

Отмена формирования отчета

Добавлено: 17 май 2011, 09:36
Aleksey
Здравствуйте,

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

Спасибо.

Отмена формирования отчета

Добавлено: 18 май 2011, 05:34
Funix
Нет, похоже вы все-таки не правильно поняли (я не достаточно понятно объяснил).
Привожу кусок кода (вызов функции-формы из моей библиотеки происходит в методе GetDatePeriod() через FNXL.RequestPeriod()):

Код: Выделить всё

using FNXLib;

namespace Reports
{
    public class Report : Stimulsoft.Report.StiReport
    {
		
		public void GetDatePeriod()
		{
			DatePeriod dpInit = new DatePeriod();
			DatePeriod dpNew = FNXL.RequestPeriod(null, dpInit);
			if (dpNew.IsInitialized)
			{
				DateBeg = dpNew.DateBegin;
				DateEnd = dpNew.DateEnd;
				StrPeriod = dpNew.ToString();
			}
			else
			{
				// Объект не инициализирован (нажата кнопка "Отмена")
				// Отчет не может быть сформирован - не заданы исходные данные
				// [Нужна команда отмены/прерывания формирования отчета]
			}
		}
		
        public Report()        {
			this.InitializeComponent();
			GetDatePeriod();
        }
А может мне стоит вызывать GetDatePeriod() по другому (из друго места)?
Подскажите, пожалуйста.

Отмена формирования отчета

Добавлено: 18 май 2011, 12:09
Jan
Здравствуйте,

Фактически Вам нужно остановить отчет в момент создания отчета. Добавьте в словарь булеву переменную MyVar. Если необходимо присвойте ей true. После чего добавьте код в событие BeginRender отчета:

Код: Выделить всё

if (MyVar)this.IsStopped = true;
Спасибо.

Отмена формирования отчета

Добавлено: 19 май 2011, 05:09
Funix
Вот оно - то, что "доктор прописал". Все заработало.

Большое спасибо!

Отмена формирования отчета

Добавлено: 19 май 2011, 08:27
Andrew
Всегда рады помочь!

Спасибо.