Visual Basic, .NET, ASP, VBScript
 

   
 

Михаил Эскин немало сделал для развития русскоязычных VB сайтов. Многие знают его по статьям про ActiveX на VB сайтах, другие читают статьи Михаила уже на его собственном сайте. Михаил родился в Городском роддоме №1 города Астрахани, в “черную пятницу”, ну, так скажем, почти сорок лет назад. По-прежнему живет на Юге, правда теперь уже Германии, в прекрасном городе Мюнхене.

 
     
   
 

В VB 6.0 появился новый элемент управления, который пришел на замену MS FlexGrid. И хотя, MS FlexGrid остался - новый контрол, по своим возможностям, целиком и полностью вытеснил его. Это MS Hierarchical FlexGrid (таблица, с возможностью иерархического отображения данных). К большому сожалению, многие не пользуются им, или пользуются в ограниченных рамках, просто-напросто не зная всех его возможностей. Поэтому я хочу представить Вашему вниманию отрывок из книги (посвященный данному контролу) "Visual Basic 6.0 - Наиболее полное руководство для профессиональной работы в среде Visual Basic 6.0"

Глава из книги "Visual Basic 6.0 - Наиболее полное руководство для профессиональной работы в среде Visual Basic 6.0"
© 1998 by Microsoft Corporation
© Перевод на русский язык "БХВ - Санкт-Петербург", 1998

Элементы управления Microsoft Hierarchical FlexGrid (MSHFlexGrid) (Иерархическая гибкая таблица или иерархический элемент управления FlexGrid) Microsoft FlexGrid (MSFlexGrid) (Гибкая таблица или элемент управления FlexGrid) представляют в табличном формате (grid format) данные типа Recordset (Набор записей) из одной или более таблиц базы данных.

Элемент управления Hierarchical FlexGrid предоставляет улучшенные возможности для отображения данных в таблице. Он похож на элемент управления Microsoft Data Bound grid (DataGrid) с единственным отличием: он не позволяет пользователю редактировать данные, прикрепленные (bound) к нему или содержащиеся в нем. Этот элемент управления, следовательно, позволяет отображать данные для пользователя, не затрагивая исходные данные. Однако можно комбинировать элемент управления Hierarchical FlexGrid с текстовым полем, предоставляя пользователю возможности, связанные с редактированием ячеек таблицы.

Хотя элемент управления Hierarchical FlexGrid и основан на элементе управления FlexGrid, применяемом в Visual Basic 5.0, он более гибок. Он обладает большими возможностями отображения данных, например, можно задать собственный формат отображения данных, наиболее подходящий для определенных целей.

В этом разделе основное внимание уделено вопросам использования элемента управления Hierarchical FlexGrid. Информацию по элементу управления FlexGrid можно найти в документации по Visual Basic 5.0.

Элементы управления FlexGrid, поддерживаемые Visual Basic, перечислены в табл. 7.15.

Сокращенное наименование Название элемента управления
Элемент управления MSHFIexGrid Microsoft Hierarchical FlexGrid
Элемент управления MSFIexGrid Microsoft FlexGrid

Элемент управления Hierarchical FlexGrid поддерживает следующие функции:

  • Связывание (binding) данных только для чтения
  • Динамическая перестановка столбцов и строк
  • Автоматическая перегруппировка данных при упорядочении столбцов
  • Адаптация к существующему программному коду для связанного элемента управления DataGrid
  • Управление помещением в ячейку таблицы только текста или графики, или и того и другого
  • Изменение текста в текущей ячейке из программного кода или во время выполнения
  • Автоматическое чтение данных, если элементу управления Hierarchical FlexGrid назначен элемент управления данными
  • Перенос текста в ячейках
  • ActiveX Data Binding (Привязывание данных ActiveX), когда свойства DataSource и DataMember элемента управления связаны с определенным поставщиком данных *
  • Связывание (binding) через Data Binding Manager (Диспетчер связывания данных) в Visual Basic *
  • Привязывание непосредственно к сгруппированным и связанным ADO Recordsets (Наборы записей ADO) из иерархии (hierarchy) Command (Управление) *
  • Дополнительные возможности отображения, если элемент управления Hierarchical FlexGrid связан с иерархией Recordsets. Они позволяют создавать разнообразные отображения сгруппированных и связанных наборов Recordsets (Наборы данных), включая ленты (bands). *

Примечание. Воспользоваться возможностями, отмеченными (*), можно только при использовании элемента управления Hierarchical FlexGrid. Эти возможности не доступны для элемента управления FlexGrid.

Некоторые возможности, например ленты, не оступны при использовании предыдущего элемента управления FlexGrid из-за наложенных на него ограничений. Используйте при создании новых связанных табличных элементов элемент управления Hierarchical FlexGrid, чтобы иметь доступ ко всем перечисленным выше возможностям. Элемент управления FlexGrid не подстраивается автоматически под элемент управления Hierarchical FlexGrid.

Доступ к элементу управления Hierarchical FlexGrid

Следующая процедура описывает установку и доступ к элементу управления Hierarchical FlexGrid в Visual Basic. Чтобы установить и получить доступ к элементу управления Hierarchical FlexGrid, необходимо:

  • Выбрать команду Components меню Project. Появится диалоговое окно Components.
  • На вкладке Controls выбрать опцию Microsoft Hierarchical FlexGrid Control 6.0 (Элемент управления Microsoft Hierarchical FlexGrid 6.0) и нажать кнопку ОК. Элемент управления MSHFlexGrid будет добавлен в Панель элементов управления Visual Basic.
  • В Панели элементов управления Visual Basic щелкнуть на элементе управления MSHFlexGrid и перетащить его на форму или щелкнуть дважды, чтобы добавить к форме.

Привязывание данных к элементу управления Hierarchical FlexGrid

Прежде чем можно будет использовать все предоставляемые элементом управления Hierarchical FlexGrid возможности, его надо связать с данными. Это можно сделать либо программным способом, либо с помощью нового Диспетчера связывания данных (Data Binding Manager), включенного в Visual Basic
Если элемент yпpавления Hierarchical FlexGrid приложения привязан к источнику данных, то во время разработки в нем отображаются один пустой столбец и одна пустая строка. Информация по полям и лентам автоматически не поставляется (способы получения этой информации рассматриваются в разделе "Получение структуры" ниже в данной главе). Если элемент управления Hierarchical FlexGrid выполняется без информации о полях и лентах, данные отображаются на основе установок свойств по умолчанию. То есть, если элемент управления Hierarchical FlexGrid привязан к иерархии Command, то ленты данных отображаются горизонтально таким образом, что каждая лента содержит столбец для каждого поля в наборе Recordset.

Связывание данных с иерархическим элементом управления FlexGrid при помощи Диспетчера связывания данных

Диспетчер связывания данных Visual Basic предоставляет пользователю интерфейс, с помощью которого легко связать данные с иерархическим элементом управления FlexGrid. Чтобы установить значение свойства DataSource (Источник данных) с по мощью Диспетчера связывания данных, следует:

  • Создать источник данных для иерархического элемента управления FlexGrid. Источником данных может выступать объект DataEnvironment (Окружение данных) или элемент управления ADO Data Control (ActiveX Data Object, ADO - элемент управления данными объекта данных ActiveX - новая возможность Visual Basic. Для этой процедуры необходимо создать источник данных как Объект DataEnvironment.
  • В панели элементов управления Visual Basic щелкнуть на элементе управления MSHFlexGrid и затем перетащить его на форму или щелкнуть на нем дважды, чтобы добавить к форме.
  • В окне Properties установить значение свойства DataSource так, чтобы оно указывало на объект DataEnvironment, содержащий объект Command, с которым необходимо связать иерархический элемент управления FlexGrid.

Внимание! Если значение свойства DataSource будет установлено в первоначальное значение, то все модифицированные пользователем данные в ячейках иерархического элемента управления FlexGrid будут потеряны.

  • В окне properties установить такое значение свойства DataMember, чтобы оно указывало на объект command в Data Environment (Окружение данных). Чтобы в элементе управления Hierarchical FlexGrid просматривать иерархические данные, следует установить самый верхний уровень данных - родительский объект Command в иерархии Command, в качестве значения свойства DataMember.

Программное связывание данных с элементом управления Hierarchical FlexGrid

Этот раздел описывает, как привязать данные к элементу управления Hierarchical FlexGrid программным способом. Чтобы установить значение свойства DataSource программным способом, следует:

  • В Панели элементов управления двойным щелчком на элементе управления MSHFlexGrid поместить его на форму.
  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, расположенном на форме, и в появившемся контекстном меню выбрать опцию View Code (Посмотреть код). Появится окно Редактора кода.
  • Добавить в процедуру Form_Load код для создания набора ado Recordset (Набор записей ADO) и присвоить его элементу управления Hierarchical FlexGrid. Этот код представлен ниже:

Примечание. Чтобы можно было программным способом установить источник данных, проект должен иметь ссылку на Microsoft ActiveX Data Objects (Объекты данных ActiveX). Для этого выбрать команду Select References (Выбрать ссылки) меню Project (Проект) и выбрать опцию Microsoft ActiveX Data Objects 2.0 Library (Библиотека объектов данных ActiveX 2.0).

Объявить переменные Connection (Соединение ADO) и Recordset, вставив следующий код, заменяя комментарии соответствующими именами (например, заменить <myDataSource> именем действительного источника данных):

DIM Cn As New Connection, Rs As New Recordset

' Заменить <myDataSource> действительным DSN на вашей системе
Cn.ConnectionString = "DSN=<myDataSource>"

' Используйте следующий код для SHAPE Commands
Cn.Provider = "MSDataShape"
Cn.CursorLocation = adUseNone

'Этот код для SQL Commands
Cn.CursorLocation = adUseNone
Cn.Open

' Необходимо задать правильный источник данных для используемого
' набора Recordset для созданного выше Connection

Rs. Source = "<valid SQL SELECT command>"

' Теперь ассоциировать Command с Connection и выполнить их
Set Rs.ActiveConnection = Cn
Rs.Open

Вставить следующий код для присваивания открытого набора Recordset в Rs элементу управления Hierarchical FlexGrid:

Set MSHFlexGridI.DataSource = Rs

  • Чтобы увидеть данные в элементе управления Hierarchical FlexGrid, следует выбрать команду Start меню Run или нажать клавишу <F5>.

Использование элемента управления Hierarchical FlexGrid с иерархическим набором Recordset

С иерархическим набором Recordset элемент управления Hierarchical FlexGrid используется для просмотра связанной информации. Можно отображать эту информацию для пользователя, пока исходные данные остаются неизменными и в безопасности, или добавить к элементу управления возможности, связанные с редактированием ячеек таблицы, комбинируя его с текстовым полем на форме. Когда элемент управления Hierarchical FlexGrid привязан к иерархии наборов записей, можно отображать сгруппированные и связанные наборы записей, используя ленты (bands).

Примечание Данные должны быть связаны с элементом управления Hierarchical FlexGrid перед выполнением этой процедуры, что рассматривается в разделе "Программное связывание данных с элементом управления Hierarchical FlexGrid" данной главы.

Чтобы использовать ленты при отображении иерархических наборов записей в элементе управления Hierarchical FlexGrid, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке General установить значение свойства BandDisplay (отображение ленты). Описание отображения каждой ленты приводится в разделе "Форматирование ленты" ниже в данной главе.
  • На вкладке Bands (Ленты) выбрать ленту из раскрывающегося списки Band (Лента). Этот список доступных лент основан на наборах записей и иерархии Command. Для всех лент в скобках показано имя иерархии, создающей набор записей.
  • Изменить при необходимости свойства каждой ленты. Подробную ин формацию можно найти в разделе "Форматирование ленты" данной главы.
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства лент, и закрыть диалоговое окно Property Pages.

Форматирование ленты

В элементе управления Hierarchical FlexGrid можно использовать ленточное форматирование для задания опций отображения конкретного набора записей. Лента создается для каждого набора записей в иерархическом наборе записей ADO. Например, когда элемент управления Hierarchical FlexGrid привязывается к иерархическому набору записей ADO, который содержит таблицы Customers и Orders, то в начале этот элемент управления содержит две ленты.

Можно изменять внешнее представление элемента управления Hierarchical FlexGrid, форматируя ленту. Это позволяет выделять важную информацию среди большого количества лент. Элементы ленты, которые можно форматировать, включают: заголовки столбцов, разделительные линии таблицы (gridlines), цвет и отступы.

Когда элемент управления привязан к неиерархическому набору записей, существует только одна лента, на которую можно ссылаться, как на Band 0. Никаких других лент нет, так как ленты основываются на наборах записей в иерархии Command.

Изменение компоновки ленты

Изменением компоновки ленты можно задавать способ отображения полей. Чтобы установить компоновку ленты, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и затем в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid. 
  • На вкладке General (Общая) установить опцию BandDisplay. 
  • Нажать кнопку ОK, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства отображения лент, и закрыть диалоговое окно Property Pages.

Отображение заголовков столбцов

Если лента отображается горизонтально, можно задать отображение заголовков в элементе управления Hierarchical FlexGrid. Они отображаются не посредственно над лентой, повторяясь для каждой ленты в элементе управления Hierarchical FlexGrid. Чтобы отобразить один набор заголовков для каждой ленты вверху или в левой части элемента управления Hierarchical FlexGrid, следует использовать фиксированные ячейки вместо заголовков.

Информацию о фиксированных ячейках можно найти в разделе "Редактирование ячеек в крупноформатной таблице элемента управления Hierarchical FlexGrid" ниже в данной главе.

Чтобы установить заголовки столбцов, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid. 
  • На вкладке Bands выбрать опцию ColiimnHeaders (Заголовки столбцов) и стиль заголовков столбцов из списка TextStyleHeader (Стиль текст в заголовке). 
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства отображения лент, и закрыть диалоговое окно Property Pages.

Изменение порядка столбцов

Можно изменять порядок следования столбцов в элементе управления Hierarchical FlexGrid. Чтобы изменить порядок следования столбцов на ленте, следует:

  • Выбрать столбец, который необходимо переместить. 
  • Клавишами управления переместить столбец в новое положение на ленте.

Изменение цвета и разделительных линий

Цвет ленты и информацию о разделительных линиях таблицы можно установить как для всех лент, так и для конкретных лент. Изменять цвет и разделительные линии можно для выделения важной информации в элементе управления Hierarchical FlexGrid, а также для улучшения читаемости. Кроме того, можно отображать или не отображать разделительные линии между ячейками на ленте. Ниже приводится описание соответствующей процедуры:

ПримечаниеЦвет индивидуальной ленты следует изменять программным способом с помощью свойства BackColorBand (Цвет фона ленты).

Чтобы глобально изменить цвет и разделительные линии, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке Bands выбрать стиль из списка Gridlines (Разделительные линии), затем щелкнуть на кнопке Apply (Применить). Выбранный стиль определяет тип линии между стандартными (текстовыми) областями элемента управления Hierarchical FlexGrid для выбранной ленты.
  • На вкладке Style (Стиль) выбрать стиль из списка GridLinesFixed. Далее, выбрать стиль из списка GridLinesUnpopulated и нажать кнопку Apply. Эти выбранные стили определяют тип линий между фиксированными и не заполненными областями элемента управления Hierarchical FlexGrid.
  • На вкладке Color (Цвет) назначить каждому свойству разделительных линий цвет. Для этого выбрать опцию ColorSet (Установить цвет), выбрать свойство, значение которого необходимо изменить (например, GridColor (Цвет линии)), установить цвет из списка Color Palette (Цветовая палитра), затем нажать кнопку Apply. Повторить эти действия для каждой разделительной линии элемента управления Hierarchical FlexGrid, свойства которой требуется изменить. Примечание. Когда используются цвета Windows по умолчанию, элемент управления Hierarchical FlexGrid появляется на экране в цветовой гамме, установленной в Панели управления. Кроме того, что можно изменять цветовые характеристики элемента управления Hierarchical FlexGrid на стандартные, можно создать собственные определения цветов в диалоговом окне Color, выбрав опцию Edit Custom Color (Редактирование цветов пользователя).
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства разделительных линий и цветов, и закрыть диалоговое окно Property Pages.

Смещение ленты

Когда ленты отображаются вертикально, можно смещать ленту на определенное число столбцов. Это позволяет четче представлять ленты с информацией пользователю. Колонка смещения перед каждой лентой содержит пустые, нерабочие ячейки. Таким образом, пользователь не может перенести фокус и эти области. Характеристики формата этих ячеек определяются свойствами форматирования смещения, например GridLinesIndent (Смещение разделительных линий).

Чтобы сместить ленту, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке Bands выбрать опцию BandIndent (Смещение ленты) и задать число столбцов, на которые необходимо сместить ленту.
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Использование свойств ленты с неиерархическими наборами записей

Можно форматировать ленту неиерархического набора записей, используя любые свойства в диалоговом окне Property Pages элемента управления Hierarchical FlexGrid. Неиерархический набор записей содержит только одну ленту, Band 0. Больше нет ни одной доступной ленты, так как ленты основываются на наборах записей в иерархии Command.

Разворачивание и сворачивание лент

Возможности разворачивания и сворачивания лент делают более легким просмотр организации набора записей и прокручивание информации в элементе управления Hierarchical FlexGrid. Благодаря этим возможностям пользователь может увидеть либо большое количество данных, либо сжатую информацию. Если ленту можно развернуть, в ее левом верхнем углу появляются значки "+" (развернуть) или "-" (свернуть). Сворачивание и разворачивание возможно как для вертикальных, так и для горизонтальных лент. Когда ленты развернуты, появляется значок "-" (свернуть). В таком состоянии ленты показывают максимальное количество данных. Когда ленты свернуты, появляется значок "+" (развернуть), и они показывают минимальное количество информации. 
Свернутые ленты могут показывать незаполненные области. Эти области форматируются в соответствии со спецификациями формата. Когда лента свернута, т.е. не отображается ни одна ее запись, столбцы этой ленты не видны. Как только пользователь разворачивает ее, столбцы отображаются. Когда ленты развернуты, они поддерживают одинаковую высоту. При необходимости меньшие ленты расширяются до высоты больших лент.

Чтобы добавить к ленте возможность разворачивания и сворачивания, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке Bands установить флажок BandExpandable (Разворачиваемая лента). Далее, выбрать ленту из списка Band (Лента). Примечание. Разворачиваемая лента должна иметь по крайней мере одну подчиненную ленту. Следовательно, флажок BandExpandable недоступен, если существует только лента Band 0.
  • Нажать кнопку OK, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Для использования возможностей разворачивания и сворачивания, следует:

  • Если эти свойства были добавлены к элементу управления Hierarchical FlexGrid через окно диалога Property Pages, выбрать команду Start (Пуск) меню Run (Выполнить), или нажать клавишу <F5>. 
  • Щелкнуть на значке "+" (развернуть) в левом верхнем углу ленты, чтобы увидеть максимум информации из набора записей. 
  • Щелкнуть на значке "-" (свернуть) в левом верхнем углу ленты, чтобы свести отображаемую информацию из набора записей к минимуму.

Примечание. Если разворачивается лента, содержащая свернутую подчиненную ленту, то последняя остается свернутой, пока ее не развернут.

Получение структуры

Информация о структуре элемента управления Hierarchical FlexGrid включает подробную установочную информацию о лентах и столбцах. По умолчанию порядок столбцов на каждой ленте такой же, как и в исходном наборе записей ADO. Информацию о структуре можно использовать для управления отображением данных в элементе управления Hierarchical FlexGrid. 
Чтобы получить информацию о лентах и столбцах, следует щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню выбрать опцию Retrieve Structure (Получить структуру) или в диалоговом окне Property Pages выбрать вкладку Bands. Она содержит структурную информацию об используемом элементе управления Hierarchical FlexGrid.
Информация об извлеченной структуре данных хранится в элементе управления Hierarchical FlexGrid. На основании этой информации элемент управления Hierarchical FlexGrid во время разработки отображает скорректированную информацию для каждой ленты и поля.

Примечание. Если структура источника данных изменилась, надо снова получить эту структуру, прежде чем появятся изменения в используемом элементе управления Hierarchical FlexGrid.

Если информация о лентах и столбцах сбрасывается, то снова устанавливается равной значениям по умолчанию.
Чтобы сбросить информацию о лентах и полях, следует щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и выбрать из появившегося контекстного меню команду Clear Structure (Очистить структуру).

Примечание. Если были сделаны какие-либо изменения в свойствах лент или столбцов используемого элемента управления Hierarchical FlexGrid, появится предупреждающее сообщение. Можно нажать кнопку ОК, чтобы установить элемент управления в состояние по умолчанию и удалить все установки, сделанные пользователем. 

Внешний вид областей элемента управления Hierarchical FlexGrid

Элемент управления Hierarchical FlexGrid содержит различные области, которые программист может переделывать по своему желанию в диалоговом окне Property Pages элемента управления или программным способом, в окне Редактора кода. Изменение внешнего вида областей может увеличить полезность используемого элемента управления Hierarchical FlexGrid.

Области элемента управления Hierarchical FlexGrid включают:

  • Стандартную область - ячейки, которые содержат информацию о связанных с элементом управления данных
  • Ленту - область, содержащую отображаемую информацию для каждого набора записей
  • Фиксированную область, состоящую из фиксированных или статических строк и столбцов
  • Область заголовков столбцов, идентифицирующую информацию о наборе записей, привязанном к элементу управления Hierarchical FlexGrid. Подробную информацию можно найти выше в данной главе в разделе "Форматирование ленты".
  • Область смещения, количество столбцов, на которое смещается лета данных при вертикальном отображении. Столбец смещения для каждой ленты содержит пустые, нерабочие ячейки. Подробную информацию можно найти в данной главе в разделе "Форматирование ленты".
  • Незаполненную область, содержащую ячейки справа и ниже рабочей области элемента управления. Эта область пуста и содержит нерабочие ячейки.

Настройка внешнего вида стандартной области

Настройка внешнего вида стандартной области элемента управления Hierarchical FlexGrid может сделать информацию более ясной и доступной. Стандартная область содержит ячейки, привязанные к данным.

Чтобы изменить внешний вид стандартной области, следует:

1. Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
2. На вкладке General установить значения следующих стандартных свойств:

  • Rows - число рядов в элементе управления Hierarchical FlexGrid
  • Columns - число столбцов в элементе управления Hierarchical FlexGrid
  • AllowBigSelection - разрешает пользователю выбирать целый столбец или ряд в элементе управления Hierarchical FlexGrid, щелкая кнопкой мыши на заголовке столбца или ряда
  • MousePointer - определяет тип указателя мыши

Примечание. Чтобы использовать пользовательский указатель мыши, следует назначить пользовательский значок свойству Mouselcon (Значок мыши) на вкладке Picture (Картинка)

  • FillStyle (Стиль заполнения) - определяет, следует ли применять форматирование текста и ячейки к одной ячейке или ко всем выбранным
  • SelectionMode () - определяет режим выбора пользователя
  • AllowUserResizing- определяет, разрешено ли пользователю изменять размер строк и столбцов с помощью мыши
  • ScrollBars - определяет, имеет ли элемент управления Hierarchical FlexGrid полосы прокрутки, и если да, то горизонтальную, вертикальную или обе
  • HighLight - определяет, следует ли выделять ячейки
  • FocusRect - задает тип прямоугольника фокуса, который элемент управления Hierarchical FlexGrid изображает вокруг текущей ячейки

3. На вкладке Style установить следующие значения стандартных свойств:

  • MergeCells - слияние ячеек с одинаковым содержимым
  • RowHeightMin - минимальная высота ряда для всего элемента управления, в твипах
  • PictureType - определяет цветное или монохромное отображение графики
  • WordWrap - определяет, располагается ли текст внутри ячейки в не сколько строк или в одну

4. На вкладке Font (Шрифт) установить значения следующих стандартных свойств:

  • Font (Шрифт) - название шрифта
  • Size (Размер) - размер шрифта в пунктах
  • Effects (Атрибуты) - подчеркнутый, зачеркнутый, полужирный или курсив. Можно установить до четырех флажков в группе Effects
  • Sample Text (Образец текста) - предварительный просмотр выбранного текста

5. Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Настройка внешнего вида фиксированной области

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

Чтобы изменить внешний вид фиксированной области, следует:

1. Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
2. На вкладке General задать число фиксированных строк и столбцов в текстовых окнах Fixed Rows (Фиксированные строки) и Fixed Cols (Фиксированные столбцы) и затем нажать кнопку Apply.
3.
На вкладке Style (Стиль) выбрать стиль текста в фиксированной области из списка TextStyleFixed (Фиксированный стиль текста) и нажать кнопку Apply.
4.
На вкладке Font (Шрифт) установить значения следующих стандартных свойств:

  • Font (Шрифт) - название шрифта
  • Size (Размер) - размер шрифта в пунктах
  • Effects (Атрибуты) - подчеркнутый, зачеркнутый, полужирный или курсив. Можно установить до четырех флажков в группе Effects.
  • Sample Text (Образец текста) - предварительный просмотр выбранного текста.

5. На вкладке Color (Цвет) назначить цвет каждому свойству фиксирован ной области. Для этого сначала выбрать опцию Color Set (Установить цвет). Затем выбрать свойство, значение которого необходимо изменить (например, BackColorFixed (Цвет фона фиксированной области)), установить цвет из списка Color Palette (Цветовая палитра) и нажать кнопку Apply. Повторить эти действия для каждой фиксированной области, свойства которой желательно изменить.

Примечание. Если используется системная палитра (Windows Default), элемент управления Hierarchical FlexGrid появляется на экране в цветовой гамме, установленной в Панели управления. Можно также создать собственные определения цветов в диалоговом окне Color (Цвет), выбрав опцию Edit Custom Color.

6. Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Настройка внешнего вида заголовков

Можно изменять форматирование заголовка ленты в элементе управления Hierarchical FlexGrid.

Чтобы изменить внешний вид области заголовков, следует:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке Bands выбрать стиль заголовка из окна TextStyleHeader (Стиль текста заголовка), затем выбрать опцию ColumnHeaders (Заголовки столбцов).
    Примечание.
    Чтобы предупредить отображение одинаковых заголовков, надо установить значение Fixed Row (Фиксированная строка) на вкладке General равным 0. Кроме того, чтобы задать отображение только одного набора заголовков для ленты в верхней части элемента управления Hierarchical FlexGrid, следует использовать фиксированные строки вместо заголовков столбцов.
  • В списках Column Caption (Надпись столбца) и Column Name (Название столбца) задать отображаемые столбцы. По умолчанию в список Column Name включены все поля из набора записей вместе с их названиями. Чтобы убрать отображение объекта Field (Поле) или изменить его имя, следует использовать список Column Caption. Чтобы не выбирать поле, необходимо установить соответствующий флажок. Для изменения имени поля надо щелкнуть на соответствующем имени, чтобы выбрать его, и за тем щелкнуть еще раз, чтобы войти в режим редактирования и переименовать его.
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Изменение внешнего вида незаполненной области

Можно изменять свойства форматирования и отображения незаполненной области элемента управления Hierarchical FlexGrid. Эта область пуста и не содержит никаких данных. Ниже приведена процедура настройки внешнего вида незаполненной области:

  • Щелкнуть правой кнопкой мыши на элементе управления Hierarchical FlexGrid, присоединенном к форме, и в появившемся контекстном меню Properties выбрать команду Property Pages. Появится диалоговое окно Property Pages элемента управления Hierarchical FlexGrid.
  • На вкладке Style (Стиль) изменить свойство GridLinesUnpopulated (Раз делительные линии незаполненной области).
  • На вкладке Color назначить цвет каждому фиксированному свойству. Для этого сначала выбрать опцию Color Set. Затем выбрать свойство, значение которого необходимо изменить (например, BackColorUnpopulated (Цвет фона незаполненной области)), установить цвет из списка Color Palette, затем нажать кнопку Apply. Повторить эти действия для каждой незаполненной области, свойства которой желательно изменить.
    Примечание. Если используются цвета Windows по умолчанию, элемент управления Hierarchical FlexGrid появляется на экране в цветовой гамме, установленной в Панели управления. Можно создать собственные определения цветов в диалоговом окне Color.
  • Нажать кнопку ОК, чтобы применить к элементу управления Hierarchical FlexGrid установленные свойства ленты, и закрыть диалоговое окно Property Pages.

Связывание элемента управления Hierarchical FlexGrid с Data Environment

Чтобы можно было использовать ленты в элементе управления Hierarchical FlexGrid, следует связать этот элемент управления с Data Environment (Окружением данных), которое содержит самый верхний, родительский объект Command.

Чтобы привязать элемент управления Hierarchical FlexGrid к Окружению данных, следует:

  • Перетащить элемент управления MSHFlexGrid на форму Visual Basic.
  • В окне Properties установить такое значение свойства DataSource, чтобы оно указывало на объект DataEnvironment (Окружение данных), который содержит объект command, к которому необходимо привязать элемент управления Hierarchical FlexGrid. Например, DataEnvironmentl.
  • В окне Properties установить такое значение свойства DataMember (Член данных), чтобы оно указывало на самый верхний, родительский объект Command в используемом окружении данных. Теперь данные привязаны к элементу управления Hierarchical FlexGrid.
  • Чтобы увидеть данные в элементе управления Hierarchical FlexGrid, следует выполнить команду Start меню Run или нажать клавишу <F5>. Структура отыскивается и появляется в элементе управления.

Сортировка и слияние данных в элементе управления Hierarchical FlexGrid

В следующем сценарии можно сортировать данные и выполнять их слияние. В большинстве случаев доступ к данным осуществляется их загрузкой из базы данных в элемент управления Hierarchical FlexGrid. Однако в данном случае вводятся специально подготовленные данные с помощью окна Редактора кода, чтобы заполнить столбцы и строки используемого элемента управления.

Чтобы создать отображение этих данных, следует:

  • Установить свойства элемента управления Hierarchical FlexGrid.  
  • Создать данные.  Определить программы для вычисления индекса и выполнения сортировки.  
  • Определить программу для ввода данных (из пункта 2) в элемент управления Hierarchical FlexGrid.  
  • Позволить элементу управления переключать виды организации данных (data organization views).

Чтобы выполнить этот сценарий, необходимо выполнить последовательность действий в том порядке, в каком она описана в этом разделе.

Установка свойств элемента управления

Используйте для задания числа столбцов и строк, информации о шрифтах и создания заголовков столбцов элемента управления Hierarchical FlexGrid (Microsoft Hierarchical FlexGrid, MSHFlexGrid) значения, представленные в табл. 7.16.

Свойство

Значение

Name (Имя)

Fg1

Cols (Столбцы) 4
Rows(Строки) 20
MergeCells (Слияние ячеек) 2 - Ограничить строки (Restrict Rows)
FormatString (Строка формата) <Region |<Product |<Employees I>Sales
FontName (Имя Шрифта) Arial

Сортировка и слияние данных

Следует использовать следующие процедуры для выполнения сценария сортировки и слияния данных в используемом элементе управления Hierarchical FlexGrid.

Чтобы отсортировать данные и выполнить их слияние, следует:

  • Создать массив для хранения специально подготовленных данных. Для этого следует вставить следующую программу в процедуру Form_Load об работки события в окне Редактора кода:

Sub Form_Load ()

Dim I As Integer

' Создание массива.

For i = Fg1.FixedRows To Fg1.Rows - 1

' Регион.
Fg1.TextArray(fgi(i, 0)) = RandomString(0)

' Продукция.
Fg1.TextArray(fgi(i, 1)) = RandomString(1)

' Служащий.
Fg1.TextArrayffgi(i, 2)) = RandomString(2)
Fg1.TextArray(fgi(i, 3)) = Format(Rnd * 10000, "#.00")

Next

' Установка слияния.
Fg1.MergeCol(0) = True
Fg1.MergeCol(1) = True
Fg1.MergeCol(2) = True

' Сортировка.
DoSort

' Форматирование таблицы
Fg1.ColWidth(O) = 1000
Fg1.ColWidth(l) = 1000
Fg1.ColWidth(2) = 1000
Fg1.ColWidth(3) = 1000

End Sub

  • Вычислить индекс и завершить сортировку. Для этого следует определить программу вычисления индекса и выполнения сортировки. Индекс используется совместно со свойством TextArray (Текстовый массив) для сортировки данных. Вставьте следующий код для вычисления индекса:

Function Fgi (r As Integer, с As Integer) As Integer

Fgi = с + Fg1.Cols * r

End Function

Sub DoSort ()

Fg1.Col = 0

Fg1.ColSel = Fg1.Cols - 1

Fg1.Sort = 1 ' Родовое восхождение.

End Sub

  • Ввести данные в используемый элемент управления Hierarchical FlexGrid. Для этого следует определить программу, которая заполняет элемент управления специально подготовленными данными:

Function RandomString (kind as Integer)

Dim s As String Select Case kind

Case 0 ' Регион.

Select Case (Rnd * 1000) Mod 5

Case 0: s = "1. Northwest"

Case 1: s = "2. Southwest"

Case 2: s = "3. Midwest"

Case 3: s = "4. East"

Case Else: s = "5. Overseas"

End Select

Case 1 ' Продукция.

Select Case (Rnd * 1000) Mod 5

Case 0: s = "1. Chai"

Case 1: s = "2. Peppermint"

Case 2: s = "3. Chamomile"

Case Else: s = "4. Oolong"

End Select

Case 2 ' Служащий.

Select Case (Rnd * 1000) Mod 4

Case 0: s = "Clare"

Case 1: s = "Tiffany"

Case 2: s = "Sally"

Case Else: s = "Lori"

End Select

End Select

RandomString = s

End Function

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

  • Реорганизовать данные, добавив следующую программу, которая будет перетаскивать столбцы на новые позиции. Эта программа использует свойство Tag (Тэг) для сохранения номера столбца, когда пользователь нажимает кнопку мыши, инициируя событие MouseDown (Мышь нажата).

Sub Fg1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)

Fg1.Tag = ""

If Fg1.MouseRow <> 0 Then Exit Sub

Fg1.Tag = Str(Fg1.MouseCol)

MousePointer = vbSizeWE

End Sub

  • Добавить следующую программу для приведения и порядок <readjust) столбцов и сортировки данных, когда пользователь отпускает кнопку мыши, инициируя событие MouseUp:

Sub Fg1_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)

MousePointer = vbDefault

If Fg1.Tag = "" Then Exit Sub

Fg1.Redraw = False

Fg1.ColPosition(Val(Fg1.Tag)) = Fg1.MouseCol

DoSort

Fg1.Redraw = True

End Sub

По завершении всех процедур этого сценария данные автоматически реорганизуются при перетаскивании столбца мышью во время выполнения.

Редактирование ячеек в крупноформатной таблице элемента управления Hierarchical FlexGrid

В данном сценарии можно редактировать ячейки в крупноформатной таблице элемента управления Hierarchical FlexGrid. Этот сценарий иллюстрирует возможности событий элемента управления Hierarchical FlexGrid и контейнеров, а также показывает, как этот элемент управления можно использовать для создания крупноформатных таблиц с редактированием ячеек с помощью стандартных элементов управления Visual Basic.

Примечание. Образец приложения (Flex.vbp) демонстрирует функциональные возможности перемещения по областям ячеек и выбора этих областей.

Чтобы создать такое отображение данных, следует:

  • Создать элемент управления Hierarchical FlexGrid и текстовое окно. 
  • Установить значения этих элементов управления.  
  • Добавить заголовки строк и столбцов к элементу управления Hierarchical FlexGrid.  
  • Добавить возможность редактирования ячейки (in-cell editing) к элементу управления Hierarchical FlexGrid.  
  • Добавить функциональную возможность корректировки данных в текстовом поле (создать "редактируемое" окно).
  • Скопировать данные из текстового поля в элемент управления Hierarchical FlexGrid.

Чтобы реализовать этот сценарий, необходимо выполнить последовательность действий в том порядке, в каком она описана в этом разделе.

Создание элементов управления

Следует добавить в проект элемент управления Hierarchical FlexGrid и затем к нему добавить элемент управления TextBox, чтобы создать отношение подчиненности (parent-child relationship).

Установка значений свойств элементов управления

Следует установить значения свойств элементов управления Hierarchical FlexGrid и TextBox в соответствии с табл. 7.17 и 7.18.

Таблица 7.17. Свойства элемента управления MSHFIexGrid

Свойство

Значение

Name

Fg2

Cols 6
Rows 20
FillStyle 1 - Повторить
FocusRect 2 - Тяжелый (Heavy)
FontName Arial
FontSize 9

Таблица 7.18. Свойства элемента управления TextBox

Свойство

Значение

Name

TxtEdit

FontName Arial
FontSize 9
BorderSize (Размер границы) 0 - Нет (None)
Visible False (Ложь)

Редактирование ячеек в крупноформатной таблице

Чтобы редактировать ячейки в используемом элементе управления Hierarchical FlexGrid, следует выполнить перечисленные ниже процедуры

  • Модифицировать используемый элемент управления Hierarchical FlexGrid, чтобы он был похож на крупноформатную таблицу. Для этого добавить следующий код к процедуре Form_Load в окне Редактора кода:

Sub Form_Load ()

Dim i As Integer

' Сделать первый столбец узким.
Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
Fg2. Col-Alignment (0) = 1 ' Отцентрировать.

' Метки строк и столбцов.
For i = Fg2.FixedRows To Fg2.Rows - 1

Fg2.TextArray(fgi(i, 0)) = i

Next

For i = Fg2.FixedCols To Fg2.Cols - 1

Fg2.ТехtАггау(fgi(0, i) ) = i

Next

' Инициализировать окно редактирования
'(оно загружается здесь)

txtEdit = "" .

End Sub

  • Создать функцию вычисления индекса для свойства TextArray:

Function Fgi (r As Integer, c As Integer) As Integer

Fgi = с + Fg2.Cols * r

End Function

  • Добавить следующий код в процедуры обработки событий KeyPress (Нажата клавиша) и DblClick (Двойной щелчок) элемента управления Hierarchical FlexGrid:

Sub Fg2_KeyPress (KeyAscii As Integer)

MSHFlexGridEdit Fg2, txtEdit, KeyAscii

End Sub

Sub Fg2_DblClick ()

MSHFlexGridEdit Fg2, txtEdit, 32 '.Имитация пробела.

End Sub

  • Добавить следующую программу для инициализации текстового окна и перемещения фокуса с элемента управления Hierarchical FlexGrid на это текстовое окно:

Sub MSHFlexGridEdit (MSHFlexGrid As Control, Edt As Control, KeyAscii As Integer)

' Использовать введенный символ.
Select Case keyascii

' Пробел - редактировать текущий текст.
Case 0 То 32

Edt = MSHFlexGrid
Edt.SelStart = 1000

' Другой символ - заменить текущий текст.
Case Else

Edt = Chr(keyascii)
Edt.SelStart = 1

End Select

Edt.Move MSHFlexGrid.Left + MSHFlexGrid.CellLeft, _

MSHFlexGrid.Top + MSHFlexGrid.CellTop, _

MSHFlexGrid.CellWidth - 8, _

MSHFlexGrid.CellHeight - 8

Edt.Visible = True

Edt.SetFocus

End Sub

Добавить к текстовому окну функциональную возможность корректировки данных. Для этого вставить следующие программы в его процедуры обработки событий KeyPress И DblClick:

Sub txtEdit_KeyPress (KeyAscii As Integer)

' Delete returns to get rid of beep.

If KeyAscii = Asc(vbCr) Then KeyAscii = 0

End Sub

 

Sub txtEdit_KeyDown (KeyCode As Integer, Shift As Integer)

EditKeyCode Fg2, txtEdit, KeyCode, Shift

End Sub

 

Sub EditKeyCode (MSHFlexGrid As Control, Edt As Control, KeyCode As Integer, Shift As Integer)

' Стандартное редактирование.
Select Case KeyCode

Case 27 ' ESC: спрятать, вернуть фокус

MSHFlexGrid. Edt.Visible = False

MSHFlexGrid.SetFocus

Case 13 ' ENTER вернуть фокус MSHFlexGrid.

MSHFlexGrid.SetFocus

Case 38 ' Клавиша "стрелка вверх"

MSHFlexGrid.SetFocus

DoEvents

If MSHFlexGrid.Row > MSHFlexGrid.FixedRows Then

MSHFlexGrid.Row = MSHFlexGrid.Row - 1

End If

Case 40 ' Клавиша "стрелка вниз"

MSHFlexGrid.SetFocus

DoEvents

If MSHFlexGrid.Row < MSHFlexGrid.Rows - 1 Then

MSHFlexGrid.Row = MSHFlexGrid.Row + 1

End If

End Select

End Sub

Далее необходимо проинструктировать элемент управления Hierarchical FlexGrid, что делать с данными, введенными в текстовое окно. Фокус возвращается к этому элементу управления, когда пользователь ввел данные и либо нажал клавишу <Enter>, либо щелкнул кнопкой мыши на другой ячейке в элементе управления Hierarchical FlexGrid. Следователь но, необходимо копировать данные из текстового окна в активную ячейку. Чтобы сделать это, следует продолжить выполнение шагов процедуры.

  • Скопировать данные из текстового окна в элемент управления Hierarchical FlexGrid, добавив следующий код в процедуры обработки событий GotFocus (Получить фокус) и LeaveCell (Оставить ячейку):

Sub Fg2_GotFocus ()

If txtEdit. Visible = False Then Exit Sub

Fg2 = txtEdit

txtEdit.Visible = False

End Sub

Sub Fg2_LeaveCell ()

If txtEdit.Visible = False Then Exit Sub

Fg2 = txtEdit

txtEdit.Visible = False

End Sub

По завершении всех процедур данного сценария данные можно будет вводить в индивидуальные ячейки во время выполнения.

Отображение схемы с заголовками при помощи элемента управления Hierarchical FlexGrid

В этом сценарии можно с помощью элемента управления Hierarchical FlexGrid создать схему отображения сворачиваемых и разворачиваемых элементов с заголовками.

Чтобы создать такое отображение данных, следует:

  • Установить значения свойств элемента управления Hierarchical FlexGrid.
  • Создать данные.
  • Добавить функциональные возможности сворачивания и разворачивания.

Чтобы реализовать этот сценарий, необходимо выполнить последовательность действий в том порядке, в каком она описана в этом разделе.

Установка значений свойств элемента управления

Следует установить четыре заголовка столбцов с помощью свойства FormatString (Строка форматирования). Первый столбец установить узким и пустым (как в крупноформатной таблице), а значения трех других установить так, чтобы они содержали данные (включая пробелы между каждым заголовком). Кроме этого, следует установить значения свойств в соответствии с табл. 7.19.

Таблица 7.19. Свойства элемента управления MSHFIexGrid

Свойство Значение
Name Fg3
Cols 4
Rows 2
Selection Mode (Режим выбора) 1-По строкам
FillStyle (Стиль заполнения) 1 - Повторить
FocusRect 0 - Нет(None)
GridLines 0 - Нет(None)
GridLinesFixed 2 - Вкладка (Inset)
FormatString ^|Description |>Date |>Amount
FontName Arial

Создание схемы отображения с заголовками

Чтобы реализовать сценарий создания схемы отображения с заголовками при помощи элемента управления Hierarchical FlexGrid, следует выполнить представленную ниже процедуру:

  • Создать данные для примера и установить значения свойств заголовков, столбцов и строк. Для этого необходимо вставить следующий код в процедуру Form_Load обработки события в окне Редактора кода:

Sub Form Load ()

Dim i As Integer, tot As Integer

Dim t As String, s As String

' Создание данных для примера.

t = Chr(9)

Fg3.Rows = 1

Fg3.AddItem "*" + t + "Airfare"

s = "" +t+ "SFO-JFK" +t+ "9-Apr-95" +t+ "750.00"

For i = 0 to 5

Fg3.AddItem s

Next

Fg3.AddItem "*" +t+ "Meals"

s = "" +t+ "Flint's BBQ" +t+ "25-Apr-95" +t+ "35.00"

For i = 0 to 5

Fg3.AddItem s

Next

Fg3.AddItem "*" +t+ "Hotel"

s = "" +t+ "Center Plaza" +t+ "25-Apr-95"+t+ "817.00"

For i = 0 to 5

Fg3.AddItem s

Next

' Добавить общее число и формат заголовков.

For i = Fg3.Rows - 1 То 0 Step -1

If Fg3.TextArray(i * Fg3.Cols) = "" Then

tot = tot + Val(Fg3.TextArray (i * Fg3.Cols + 3) )

Else

Fg3.Row = i

Fg3.Col = 0

Fg3.ColSel = Fg3.Cols - 1

Fg3.CellBackColor = &HCOCOCO

Fg3.CellFontBold = True

Fg3.CellFontWidth = 8

FgЗ.TextArray(i * Fg3.Cols + 3) = Format(tot, "0")

tot = 0

End If

Next

Fg3.ColSel = Fg3.Cols - 1

' Формат таблицы

Fg3.ColWidth(0) = 300

Fg3.ColWidth(l) = 1500

Fg3.ColWidth(2) = 1000

Fg3.ColWidth(3) = 1000

End Sub

Процедура создаст данные, установит и вычислит заголовки в верхней части элемента управления, а также установит такие значения свойств Col и Row, чтобы в начале выполнения была выбрана первая ячейка. Во время выполнения строки сортируются по трем категориям, группируясь в соответствии с их заголовками: AirFare, Meals и Hotel.

Добавить функциональные возможности сворачивания и разворачивания к заголовкам строк, вставив следующий код в процедуру обработки события DblClick элемента управления Hierarchical FlexGrid:

Sub Fg3_DblClick ()

Dim i As Integer, r As Integer

' Игнорировать верхнюю строку.

г = Fg3.MouseRow

If r < 1 Then Exit Sub

' Поиск поля для сворачивания или разворачивания.

While г > 0 And Fg3.TextArray(r * Fg3.Cols) = ""

r = r - 1

Wend

' Показать символ свернуть/развернуть в первом столбце.

If Fg3.TextArray(r * Fg3.Cols) = "*" Then

Fg3.TextArray(r * Fg3.Cols) = "+" Else

Fg3.TextArray(r * Fg3.Cols) = "*"

End If

' Развернуть элементы под текущим заголовком.

г = г + 1

If Fg3.RowHeight(r) = 0 Then

Do While Fg3.TextArray(r * Fg3.Cols) = ""

Fg3.RowHeight(r) = -1 ' Default row height.

r = r + 1

If r >= Fg3.Rows Then Exit Do

Loop

' Свернуть элементы под текущим заголовком.

Else

Do While Fg3.TextArray(r * Fg3.Cols) = ""

Fg3.RowHeight(r) = 0 ' Hide row.

r = r + 1

If r >= Fg3.Row3 Then Exit Do

Loop

End If

End Sub

Как только выполнены все шаги этого сценария, можно разворачивать и сворачивать заголовки строк, дважды щелкая на символах "+" или "*" в пер вой колонке во время выполнения

Примечание. Можно модифицировать этот пример, чтобы вместо символов "+" и "*" отображались некоторые картинки. Можно добавить к схеме дополнительные уровни.

 
     

   
   
     
  VBNet рекомендует