Свойства списков изображений

Количество свойств у списков изображений невелико.

 

BackColor ImageWidth MaskColor Parent
HImageList Index Name Tag
ImageHeight Listlmages Object UseMaskColor

 

Работа со списком изображений начинается со свойства Name. Для элементов этого типа обычно используется префикс iml. Связывая список изображений с другим элементом, я обычно присваиваю ему то же имя. Например, если список изображений связывается с панелью инструментов tbrToolbar, то ему присваивается имя imlToolbar.

Свойство ImageHeight определяет высоту, a ImageWidth — ширину всех изображений в списке. Важно помнить о том, что все изображения в списке должны иметь одинаковые размеры. Если вам потребуются разные размеры, придется воспользоваться несколькими списками изображений.

Свойство MaskColor позволяет выводить изображения на прозрачном фоне — оно определяет фоновый цвет изображений, принадлежащих элементу. Во всех изображениях элемента должен использоваться один и тот же цвет фона. После того как свойству MaskColor будет задано нужное значение, следует установить свойство UseMaskColor в True.

 

ВНИМАНИЕ Все изображения в списке должны иметь одинаковые размеры. Кроме того, в них должен использоваться один и тот же цвет фона (маски).

 

События списков изображений

Со списками изображений не связаны никакие события, поэтому мы переходим к рассмотрению единственного метода.

 

Методы списков изображений

Списки изображений имеют всего один метод — Overlay. Он используется для наложения двух изображений в одном списке. С помощью свойства MaskColor для верхнего изображения можно задать прозрачный цвет, и тогда оно накладывается на нижнее. Например, следующий фрагмент:

 

‘Наложить изображение 1 на изображение 2

Set Picture1. Picture = imToolbar.Overlay(1, 2)

 

накладывает первое изображение элемента на второе.

 

Все вместе

Настал момент, которого мы так долго ждали. Следующий пример демонстрирует возможности новых элементов — дерева, табличного списка и списка изображений. Давайте посмотрим, как они работают вместе:

1. Создайте в Visual Basic новый проект командой File > New и выберите стандартный ЕХЕ-файл (Standard EXE).

2. Щелкните на проекте Projectl в окне проекта и задайте свойству Name проекта значение ObjectExplorer.

3. Выделите форму Form1 и задайте ее свойству Name значение frmMain.

4. Задайте свойству Caption значение Object Explorer.

5. Щелкните правой кнопкой мыши на панели элементов и выберите из контекстного меню команду Components.

6. Прокрутите список в открывшемся диалоговом окне Components и установите флажок рядом со строкой Microsoft Windows Common Controls 6.0. Нажмите кнопку OK, чтобы добавить элемент на панель.

7. Поместите на форму frmMain список изображений, для чего дважды щелкните на списке изображений в панели. Когда список появится на форме, переместите его в правый нижний угол формы и задайте его свойству Name значение imlCategories.

8. В окне свойств дважды щелкните на строке Custom, чтобы открыть диалоговое окно со страницами свойств элемента.

9. Перейдите на вкладку Images. Нажмите кнопку Insert Picture, чтобы добавить изображение в список.

10. В диалоговом окне Select picture выделите файл Closed.bmp из каталога Common\ Graphics\Bitmaps. Нажмите кнопку Open, чтобы включить графический файл в элемент, и нажмите кнопку ОК.

11. Поместите на frmMain еще один список изображений. Задайте его свойству Name значение imlItems. Расположите его рядом со списком imlCategories.

12. Повторите шаги 8-10, добавьте в элемент изображение Leaf.bmp и нажмите кнопку Open.

13. Закройте диалоговое окно со страницами свойств кнопкой ОК.

14. Создайте дерево на форме frmMain. Задайте его свойству Name значение tvw-Categories.

15. В окне свойств дважды щелкните на строке Custom, чтобы открыть диалоговое окно со страницами свойств элемента.

16. На вкладке General этого окна задайте свойству Style значение 7 - tvwTree-HnesPlusMinusPictureText, свойству LabelEdit — значение 1 - Manual, свойству Indentation — значение 283 и свойству ImageList — значение imlCategories.

17. Закройте диалоговое окно со страницами свойств кнопкой ОК.

18. Переместите дерево tvwCategories в левую часть формы.

19. Создайте табличный список на форме frmMain. Задайте его свойству Name значение Ivwltems.

20. В окне свойств дважды щелкните на строке Custom, чтобы открыть диалоговое окно со страницами свойств элемента.

21. Задайте свойству View значение 3 - IvwReport, свойству Arrange — значение 2 -IvwAutoTop, свойству LabelEdit — значение 1 - Manual, а свойству OLEDropMode -значение 1 - OLEDropManual.

22. Перейдите на вкладку Image Lists.

23. Введите в поле Normal значение imlltems. Тем самым вы связываете табличный список со списком изображений imlltems.

24. Перейдите на вкладку Column Headers.

25. Нажмите кнопку Insert Column. В коллекцию добавляется первый объект заголовка столбца.

26. Введите в поле Text значение Название.

27. Закройте диалоговое окно со страницами свойств кнопкой ОК.

28. Переместите список imlltems в правый верхний угол формы. Примерный вид формы показан на рис. 3.22.

29. Сохраните свою работу командой File > Save Project.

 

 

Рис. 3.22. Форма Object Explorer в режиме конструирования

 

30. Дважды щелкните на форме frmMain, чтобы открыть окно программы.

31. Включите следующий код в процедуру события Form_Resize: Private Sub Form_Resize()

 

Dim mid1 As Integer

Dim mid2 As Integer

 

Mid1 = (ScaleWidth / 2) - 50

mid2 = (ScaleWidth / 2) + 50

 

If WindowState <> vbMinimized Then

tvwCategories.Move 0, 0, mid1, ScaleHeight

Ivwltems.Move mid2, 0, ScaleWidth - mid2, ScaleHeight

End If

End Sub

 

Приведенный фрагмент кода стоит рассмотреть подробнее. В первых двух строках объявляются две переменные, mid1 и mid2. Две следующие строки присваивают им значения, обозначающие расстояние от центра формы до левой и правой границ. Прибавляя и вычитая 50, мы создаем аккуратную границу между двумя элементами.

Строка If...Then говорит о том, что программа должна выполнить следующий фрагмент лишь в том случае, если форма не находится в свернутом состоянии. Если форма свернута, при попытке перемещения и изменения размеров элементов возникнет ошибка. Оператор If...Then подробно рассматривается в уроке 6, «Логика и последовательность выполнения программы».

В процедуру события Form_Load() вставьте следующий фрагмент:

 

Private Sub Form_Load()

Dim cat As Node

 

' Включить в дерево новые узлы

With tvwCategories.Nodes

Set cat =.Add(,, "root", "Объекты", 1)

Set cat =.Add("root", tvwChild,, "Встроенные”,1)

Set cat =.Add("root", tvwChild,, "Проводник",1)

Set cat =.AddC'root", tvwChild,, "Internet",1)

End With

End Sub

 

В первой строке создается переменная типа Node. Она позволит нам работать с коллекцией Nodes в табличном списке. Следующая строка (With...) сообщает компилятору Visual Basic о том, что он должен работать с коллекцией Nodes элемента tvwCategories.

Первая строка внутри оператора With добавляет узел на корневом уровне дерева. Мы присваиваем ему текстовое значение "Объекты", поскольку в дереве будет выводиться иерархический список объектов. Три следующие строки добавляют в корневой объект узлы следующего уровня (tvwChild). Каждый узел имеет собственное описание: в одном содержатся встроенные элементы, в другом — элементы в стиле Проводника и в третьем — элементы для работы с Интернетом. Помните о том, что каждый узел на самом деле представляет собой категорию — это означает, что в нем могут «содержаться» другие объекты.

Добавьте следующий фрагмент в секцию (General)(Declarations) формы frmMain:

 

Option Explicit

Private Sub ListExplorer()

Dim itm As Listltem

 

With Ivwltems.Listltems.Clear Set itm =,Add(,, "Дерево",1)

Set itm =.Add(,, "Табличный список", 1)

Set itm =.Add(,, "Список изображений", 1)

Set itm =.Add(,, "Панель инструментов", 1)

Set itm =.Add(,, "Строка состояния", 1)

End With

 

End Sub

 

Private Sub Listlnternet()

Dim itm As Listltem

 

With Ivwltems.Listltems

.Clear

Set itm =.Add(,, "Web-броузер", 1)

Set itm =.Add(,, "ShellFolderView", 1)

Set itm =,Add(,, "Inet", 1)

Set itm =.Add(,, "Winsock", 1)

End With

End Sub

 

Private Sub Listlntrinsics()

Dim itm As Listltem

 

With Ivwltems.Listltems

.Clear

Set itm =,Add(,, "Графическое поле", 1)

Set itm =,Add(,, "Надпись", 1)

Set itm =.Add(,, "Текстовое поле", 1)

Set itm =.Add(,, "Рамка", 1)

Set itm =,Add(,, "Кнопка", 1)

Set itm =,Add(,, "Флажок", 1)

Set itm =.Add(,, "Переключатель", 1)

Set itm =.Add(,, "Комбинированное поле", 1)

Set itm =,Add(,, "Список", 1)

Set itm =.Add(,, "Горизонтальная полоса прокрутки", 1)

Set itm =.Add(,, "Вертикальная полоса прокрутки", 1)

Set itm =,Add(,, "Таймер", 1)

Set itm =.Add(,, "Список дисков", 1)

Set itm =.Add(,, "Список каталогов", 1)

Set itm =.Add(,, "Список файлов", 1)

Set itm =.Add(,, "Фигура", 1)

Set itm =,Add(,, "Линия", 1)

Set itm =.Add(,, "Рисунок", 1)

Set itm =.Add(,, "Данные", 1)

Set itm =,Add(,, "OLE", 1)

End With

End Sub

 

Первая строка, Option Explicit, вводит обязательное объявление переменных в проекте. Три последующие процедуры очень похожи. В каждой объявляется переменная типа Listltem с именем itm. Эта переменная используется для работы с коллекцией List Items элемента Ivwltems.

Оператор With... сообщает компилятору о том, что для следующего фрагмента используется коллекция Listltems табличного списка. Следующая команда,. Clear, очищает коллекцию Listltems и удаляет из нее все занесенные ранее элементы. Последующие команды включают в коллекцию новые объекты типа Listltem.

Наконец, включите следующий фрагмент в процедуру события NodeClick() элемента tvwCategories:

 

Private Sub tvwCategories_NodeClick(ByVal Node As ComctlLib.Node)

Select Case Node

Case Is = "Встроенные"

Listlntrinsics

Case Is = "Проводник"

ListExplorer

Case Is = "Internet"

Listlnternet

End Select

End Sub

 

Сохраните проект командой File > Save и запустите программу клавишей F5.

Внешний вид формы показан на рис. 3.23. В левой части формы находится дерево, а в правой — табличный список. Обратите внимание — при изменении размеров формы происходит автоматическое масштабирование элементов. Откройте папку Объекты двойным щелчком. Затем щелкните на любой категории, чтобы просмотреть ее содержимое.

 

 

 

Рис. 3.23. Программа Object Explorer в действии

 

Не беспокойтесь о процедурах перетаскивания OLE. Мы подробно рассмотрим их в уроке 11, когда у вас появится некоторый опыт программирования.

 

Строка состояния

Строка состояния — следующий важный представитель новых управляющих элементов Windows. В строке состояния выводятся различные сведения для пользователя. Она отдаленно напоминает системную панель, расположенную в правой части панели задач Windows. Строка состояния также присутствует в Проводнике Windows. В других приложениях на ней могут выводиться системное время и дата, значки или статистические данные, например количество файлов, содержащихся в табличном списке.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: