В 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 (Цвет фона ленты).
Чтобы глобально изменить цвет и разделительные
линии, следует:
Смещение ленты
Когда ленты отображаются вертикально, можно
смещать ленту на определенное число столбцов. Это позволяет четче
представлять ленты с информацией пользователю. Колонка смещения перед
каждой лентой содержит пустые, нерабочие ячейки. Таким образом,
пользователь не может перенести фокус и эти области. Характеристики
формата этих ячеек определяются свойствами форматирования смещения,
например 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 через окно диалога 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
Как только выполнены все шаги этого сценария,
можно разворачивать и сворачивать заголовки строк, дважды щелкая на
символах "+" или "*" в пер вой колонке во время выполнения
Примечание. Можно модифицировать этот пример, чтобы вместо символов
"+" и "*" отображались некоторые картинки. Можно добавить к схеме
дополнительные уровни.