Работа со списками и комбинированными полями

 

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

1. Создайте новый проект, поместите на форму список и задайте его свойству Name значение IstGroceries.

2. Создайте под списком комбинированное поле и установите значение его свойства Name в cboProducts, а значение Caption — в Хлеб.

3. Разместите на форме две надписи. Первая надпись должна находиться над списком, ее свойству Caption следует присвоить значение Заказ продуктов.

4. Расположите вторую надпись между списком и комбинированным полем. Ее свойство Caption должно иметь значение Склад.

5. Создайте кнопку в середине нижней части формы. Задайте ее свойству Name значение cmdAdd, а свойству Caption - значение &Добавить.

6. Отредактируйте процедуру события Form_Load:

 

Private Sub Form_Load()

Очистить список

LstGroceries.Clear

' Добавить строки в комбинированное поле

cboProducts.AddItem "Хлеб"

cboProducts.AddItem "Мука"

cboProducts.AddItem "Мясо"

cboProducts.AddItem "Макароны"

cboProducts.AddItem "Конфеты"

cboProducts.AddItem "Лимонад"

End Sub

 

7. Добавьте следующий фрагмент в процедуру события cmdAdd_Click:

 

Private Sub cmdAdd_Click()

IstGroceries.AddItem cboProducts.Text

End Sub

 

8. Запустите программу. Выберите продукт из комбинированного поля. Чтобы включить его в заказ, нажмите кнопку Добавить.

9. Обратите внимание — на складе нет мороженого. Вы можете ввести его в текстовом поле и нажать кнопку Добавить. Наверное, для вас придется сделать специальный заказ.

 

ПОДСКАЗКА

Чтобы вызвать в программе процедуру события другого элемента, достаточно ввести ее имя, например cmdAdd_Click: Однако для вызова событий Click кнопок существует и другая возможность — присвоить значение True свойству Value данной кнопки (например, cmdAdd.Value = True).

 

Рисунки

Рисунок (стандартный префикс — img) является упрощенным вариантом графического поля, о котором будет рассказано в следующем разделе. В отличие от графических полей рисунки не могут выполнять функции контейнера и содержать другие объекты. В некоторых ситуациях их возможностей не хватает, однако они прекрасно подходят для простейшего вывода изображений на форме. Рисунок занимает гораздо меньше памяти, чем графическое поле.

Элемент-рисунок, входящий в комплект Visual Basic, может отображать растровые файлы (.BMP), значки (.ICO), метафайлы (.WMF), а также файлы в формате JPEG (.JPG) и GIF (.GIF). Он упрощает вывод графики, полученной из World Wide Web или созданной в популярных графических редакторах.

 

Свойства рисунков

По количеству свойств рисунки уступают графическим полям, о которых будет рассказано далее.

 

Appearance BorderStyle Container DataField
DataFormat DataMember DataSource DragIcon
DragMode Enabled Height Index
Left MouseIcon MousePointer Name
OLEDragMode OLEDropMode Parent Picture
Stretch Tag Top Visible
WhatsThisHelpID Width    

 

Как и в большинстве графических элементов, файл для рисунка задается свойством Picture. Вероятно, самое интересное из перечисленных свойств -Оно имеет логический тип, то есть может принимать только значения True или False. В случае False (по умолчанию) размеры элемента автоматически подгоняются под размер изображения. Если позднее они изменяются, то изображение обрезается, окружается пустым местом или происходит и то и другое, в зависимости от направлений масштабирования по горизонтальной и вертикальной осям. Если же установить значение свойства Stretch в True, изображение масштабируется вместе с элементом. У графических полей ближайшим аналогом свойства Stretch является AutoSize. Если установить значение свойства AutoSize графического поля в True, размеры элемента автоматически подгоняются под размеры содержимого. Тем не менее в отличие от изображений с установленным свойством Stretch при масштабировании графического поля изображение остается на месте и не «растягивается» вместе с ним.

 

События рисунков

С рисунками связано относительно мало событий, причем полезных среди них оказывается еще меньше.

 

Click DblClick DragDrop DragOver
MouseDown MouseMove MouseUp OLECompleteDrag
OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData
OLEStartDrag      

 

Иногда рисунки хорошо подходят на роль приемника для операций перетаскивания. Дело в том, что по рисунку можно судить о том, что произойдет при «сбрасывании» перетаскиваемого объекта на этот элемент. Операция перетаскивания рассматривается в уроке 11

 

Методы рисунков

Рисунки обладают следующими методами:

 

Drag Move OLEDrag
Refresh ShowWhatsThis ZOrder

 

Скорее всего, вам не придется использовать эти методы в своих приложениях.

 

ПОДСКАЗКА В комплект Visual Basic входит немало заранее подготовленных значков. Они находятся в подкаталоге \Graphics\Icons основного каталога Visual Basic, а также на компакт-диске.

 

Работа с рисунками

Давайте рассмотрим пример практической работы с рисунками:

1. Откройте уже знакомый проект Controls.vbp из подкаталога \MSDN98\98vs\1033\ Samples\VB98\Controls\.

2. Запустите программу и нажмите кнопку Images.

Как видно из рис. 3.11, вы можете щелкнуть на любом символе карточной масти, и программа сообщит о том, какая масть была выбрана. Приведенный ниже код программы прост и предельно понятен.

 

Рис. 3.11. Работа с рисунками

 

Private Sub imgClub_Click()

shpCard.Left = imgClub.Left

picStatus.Cls

picStatus.Print "Трефы" End Sub Private Sub imgDiamond_Click()

shpCard.Left = imgDiamond.Left

picStatus.Cls

picStatus.Print "Бубны" End Sub Private Sub imgHeart_Click()

shpCard.Left = imgHeart.Left

picStatus.Cls

picStatus.Print "Червы" End Sub private Sub imgSpade_Click()

shpCard.Left = imgSpade.Left

picStatus.Cls

picStatus.Print "Пики"

End Sub

 

Контур карты представляет собой специальный элемент, который во время выполнения программы сдвигается за левый край формы. Это обеспечивается строкой shpCard. Left = -500 в коде события Load формы. Того же эффекта можно достичь, установив значение свойства Visible в False.

 

Графические поля

Как нетрудно догадаться по названию, графические поля (см. рисунок) часто используются для отображения графических файлов (например, растров, значков, файлов в формате JPEG или GIF). В этом отношении они похожи на только что рассмотренные нами рисунки. Тем не менее эти элементы обладают различными свойствами и по-разному ведут себя. Если вы хотите просто вывести картинку на форме, то рисунок обычно оказывается удобнее графического поля. Рисунки занимают меньше памяти и фактически являются упрощенными вариантами графических полей. С другой стороны, если картинка должна перемещаться по форме, графические поля обеспечивают более высокое качество вывода. Кроме того, во время выполнения программы в графическом поле можно выводить текст и рисовать при помощи различных методов. Графические методы рисуют линии, круги и прямоугольники во время выполнения программы. Но самое главное заключается в том, что графическое поле может выполнять функции контейнера. Следовательно, в него можно поместить кнопку или другой элемент. В этом отношении графические поля действуют как «формы внутри форм».

 


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



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