End Sub

Оценить
(0 голоса)

В приложении Xtreme Orders используется еще одно событие Report Viewer — событие Close Butt on Click. Это событие инициируется всякий раз, когда пользователь щелкает в окне Report Viewer на кнопке с изображением символах, чтобы закрыть текущую вкладку детализации (которая в объектной модели Report Viewer называется текущим представлением). И в этом случае приложение отображает окно с сообщением, в котором пользователь должен подтвердить свое намерение закрыть вкладку детализации. За счет установки в коде события значения для параметра Use Defaults вкладка детализации закрывается или не закрывается на основании выбранного пользователем варианта.

Так же как и отображаемая вкладка детализации, закрываемая вкладка детализации должна быть известна внутри события (в приведенном примере она просто включается в окно сообщения). Поскольку событие CloseButtonClicked не передает параметр GroupNameList или другой подобный параметр в событие, чтобы определить текущее представление, придется потрудиться. Вот где в игру вступает метод GetViewPath и его свойство ActiveViewIndex.

Свойство ActiveViewIndex просто возвращает целое число (начиная с единицы), указывающее, какая вкладка детализации выбрана на данный момент. Несмотря на всю свою пользу, это свойство не возвращает фактическую строку, содержащую имя группы, вкладка детализации которой сейчас просматривается. Чтобы вернуть Такую Строку, придется воспользоваться методом GetViewPath объекта Report Viewer. Этот метод в качестве аргумента принимает числовой индекс, обозначающий вкладку в окне Report Viewer, путь представления которой требуется просмотреть. Этот метод возвращает массив строк (нумерация в этом массиве начинается с единицы), который содержит представления (или имена групп), отображаемые на вкладке детализации, чей индекс был указан в качестве аргумента в методе GetViewPath. Как и в случае с массивом GroupNameList, далее вы сможете определить имя текущей закрываемой вкладки, обратившись к последнему элементу массива (с помощью функции UBound).

Внимательно посмотрите на следующий фрагмент кода:

Private Sub CRViewerl_CloseButtonClicked(UseDefault As Boolean)

If MsgBox("Close '" & _

CRViewerl.GetViewPath(CRViewerl.ActiveViewIndex)

(UBound(CRViewerl.GetViewPath(CRViewerl.ActiveViewIndex))) _

& Drill-Down tab?", vbQuestion + vbYesNo, _

"Xtreme Order Report") = vbNo Then UseDefault = False End If 'MsgBox("Close.

End Sub

На заметку! Колонка данной книги не позволяет уместить целиком команду CRViewerl. GetViewPath в одной строке — строка с этой командой была разбита на несколько частей. Если вы посмотрите на код приложения-примера, доступный на сайте издательства, то увидите, что некоторые его строки разбиты на несколько частей, что необходимо для правильной интерпретации данной строки компилятором Visual Basic.

Обратите внимание на то, что метод GetViewPath предоставляется вместе со свойством ActiveViewIndex, благодаря чему возвращаться будет массив строк, содержащий имена всех отображаемых на текущей вкладке детализации групп. Хотя отчет Xtreme Orders содержит только один уровень группирования, функция Ubound все равно используется для извлечения последнего элемента возвращаемого методом GetViewPath массива. Это позволяет поддерживать совместимость с верхними уровнями (на случай, если вы когда-нибудь захотите добавить в свой отчет еще несколько групп).

Еще RDC обеспечивает в Report Viewer поддержку для таких уже знакомых вам инструментальных средств Crystal Reports, как Select Expert (Эксперт выбора), Search Expert (Эксперт поиска) и Text Search (Текстовый поиск). Кнопки вызова этих инстру-

ментов могут включаться и отключаться как во время выполнения, так и во время проектирования. Кроме того, с помощью методов SearchByFormula и SearchForText вы можете программным способом выполнять поиск по формуле и тексту.

Внимание! Если вы интегрируете внешний файл .RPT в RDC и хотите перехватывать события детализации из Report Viewer, обязательно установите флажок Create Group Tree (Создать дерево группы) в окне параметров, появляющемся в Crystal Reports после выбора в меню File пункта Report Options (Параметры отчета). Если вы специально не установите этот флажок, то можете получить ошибку, когда Report Viewer попытается перехватить событие детализации.

Обработка ошибок
Другие свойства и методы RDC
Метод DiscardSavedData
Работа с базой данных SQL
Подотчеты RDC

Добавить комментарий


Защитный код
Обновить