Давайте изменим нашу форму, чтобы с ее помощью можно было составить заказ для продуктового магазина. Мы хотим, чтобы приложение позволяло выбрать строки из комбинированного поля и включить их в список.
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). В этом отношении они похожи на только что рассмотренные нами рисунки. Тем не менее эти элементы обладают различными свойствами и по-разному ведут себя. Если вы хотите просто вывести картинку на форме, то рисунок обычно оказывается удобнее графического поля. Рисунки занимают меньше памяти и фактически являются упрощенными вариантами графических полей. С другой стороны, если картинка должна перемещаться по форме, графические поля обеспечивают более высокое качество вывода. Кроме того, во время выполнения программы в графическом поле можно выводить текст и рисовать при помощи различных методов. Графические методы рисуют линии, круги и прямоугольники во время выполнения программы. Но самое главное заключается в том, что графическое поле может выполнять функции контейнера. Следовательно, в него можно поместить кнопку или другой элемент. В этом отношении графические поля действуют как «формы внутри форм».
|
|