ТЕМА № 23.Создание пользовательского элемента управления «Бегущая строка»
Задание: разработайте элемент управления «Бегущая строка», который прокручивает заданный текст в PictureBox справа налево.
Ход работы
1 Создайте новый проект, выбрав в окне New Project ярлык ActiveX Control (проект пользовательского элемента управления).
Рис. 44. Окно пользовательского элемента управления
2 Обратите внимание, что у этого окна нет заголовка и границ (рис. 44), т. к. мы создаем не форму, а только элемент управления, который в последствии будет располагаться на форме. В появившемся окне создайте элементы управления PictureBox и Timer (рис. 44).
3 В первую очередь, измените имя элемента управления на БегущаяСтро-ка (это имя будет затем использовано при создании экземпляров элемента управления).
4 Далее необходимо запрограммировать событие Resize для нашего пользовательского элемента управления (в противном случае при размещении элемента управления на новой форме размер графического окна PictureBox будет неизменным), для этого дважды щелкните на форме, а затем из списка событий выберите Resize.
5 Это событие происходит каждый раз при изменении размеров нашего элемента управления, поэтому в него необходимо поместить следующий код, который увеличивает размер PictureBox на весь доступный размер элемента управления:
Private Sub UserControl_Resize()
Picture1.Top = 0
Picture1.Left = 0
Picture1.Width = Width
Picture1.Height = Height
End Sub
6 Теперь, для того, чтобы убедиться в работоспособности нашего элемента управления, добавим еще один проект, создав тем самым группу проектов. Для этого в меню File выберите пункт Add Project и в появившемся окне New Project дважды щелкните по ярлыку Standart EXE.
7 На новой форме созданного EXE-проекта расположите элементы управления, как показано на Рис. 45. (Обратите внимание: если проект с пользовательским элементом управления открыт для редактирования, то на панели с инструментами его иконка недоступна. Поэтому необходимо вернуться к нему с помощью окна Project Explorer и закрыть окно.)
Рис. 45. Вид формы для тестирования элемента у правления БегущаяСтрока
8 Теперь необходимо заставить двигаться надпись по графическому окну. Для этого следует описать переменную, которая будет содержать текущую координату X, а в событии Timer поместить следующий код:
Private PosX As Integer
Private Sub Timer1_Timer()
With Picture1
.Cls
.CurrentX = PosX
.CurrentY = 0
End With
Picture1.Print "Привет!"
PosX = PosX - 20
If PosX < 0 Then PosX = Picture1.Width
End Sub
9 Обратите внимание на новый метод Print элемента управления PictureBox, который выводит текстовую строку в текущей позиции графического курсора. Для этого задаются его свойства CurrentX и CurrentY.
10. Не забудьте задать для переменной PosX начальное значение. Это необходимо сделать в процедуре события UserControl_Resize:
PosX = Picture1.Width
11 Перейдите на форму и, если Вы все сделали правильно, то в элементе управления БегущаяСтрока строка будет действительно бегущей! Для большего эффекта создайте несколько (в разумных пределах!) БегущихСтрок. Запустите и отладьте приложение.
12 Для того чтобы можно было выводить любой текст на БегущейСтро-ке, добавьте в начало модуля элемента управления описание глобальной переменной Текст. Далее необходимо исправить событие Timer следующим образом:
Public Текст As String
Private Sub Timer1_Timer()
With Picture1
.Cls
.CurrentX = PosX
.CurrentY = 0
End With
Picture1.Print Текст
PosX = PosX - 20
If PosX < 0 Then PosX = Picture1.Width
End Sub
13 Теперь пришло время запрограммировать событие Click для кнопки Изменить так, чтобы текст в бегущей строке изменялся:
Private Sub cmdИзменить_Click()
БегущаяСтрока1.Текст = Text1
End Sub
Рис. 46. Бегущая строка готова!
14 Теперь необходимо добавить к нашему элементу управления хотя бы одно настоящее свойство, к примеру, свойство Size (размер текста), при изменении которого будет увеличиваться или уменьшаться размер шрифта. Для этого необходимо добавить в модуль элемента управления 2 процедуры:
Public Property Let Size(Settings As Integer)
Picture1.FontSize = Settings
End Property
Public Property Get Size() As Integer
Size = Picture1.FontSize
End Property
Первая процедура (Property Let – установка свойства) выполняется при присвоении свойству Size какого-либо значения, а вторая (Property Get –считывание свойства) выполняется всякий раз, когда из свойства считывается его значение.
15 Модифицируйте Вашу форму, добавив полосу прокрутки для изменения размера шрифта от 1 до 100 (не забудьте увеличить высоту элемента управления БегущаяСтрока).
Дополнительное задание
Проблема! Задайте очень длинную строку текста и Вы увидите, что при достижении левой границы текст сразу исчезает и начинает передвигаться сначала. Попробуйте исправить этот недостаток, чтобы вся строка скрывалась за левой границей БегущейСтроки.
Контрольные задания
Добавьте к созданному элементу управления следующее новое свойство и соответственно измените приложение для его тестирования:
1 ЦветТекста (цвет текста бегущей строки);
2 ЦветФона (цвет фона бегущей строки);
3 Шрифт (шрифт текста бегущей строки);
4 Скорость (скорость передвижения текста в бегущей строке);
5 СтопСтарт (остановка или запуск бегущей строки);
6 Направление (перемещение текста направо или налево);
7 ГрадиентФона (которое будет менять цвет фона от белого до черного и обратно).
Вопросы для самоконтроля
1 Что такое пользовательский элемент управления?
2 Как тестировать пользовательский элемент управления в режиме проектирования?
3 Для чего необходима процедура Property Let (Property Get)?
4 Когда выполняется процедура Property Let (Property Get)?
ТЕМА № 24.Печать из приложения на VB
Задание: разработайте приложение для печати справок студентам о том, что они действительно учатся в данном учебном заведении.
Ход работы:
1 Создайте новый проект и разместите элементы управления (txtФИО, cmbПол, cmbФакультет и метки для остального текста справки) на форме, как показано на рис. 47.
2 На первом этапе работы над этим приложением постараемся разработать интерфейс формы таким образом, чтобы пользователю было комфортно работать с приложением. Для этого, в первую очередь, занесите в комбинированные списки cmbПол и cmbФакультет следующие значения:
cmbПол – она, он;
cmbФакультет – гуманитарный, МИИП, АТМ и ...
3 Теперь для того, чтобы при загрузке формы в этих списках стояли первоначальные значения, в процедуре Load для формы необходимо их инициализировать следующим образом:
Private Sub Form_Load()
cmbПол.ListIndex = 0
cmbФакультет.ListIndex = 0
End Sub
4 Запрограммируйте кнопку Выход.
5 Запустите приложение и проверьте, насколько удобно стало вводить данные.
Рис. 47. Мастер справок готов!
6 Теперь опишем процедуру Печать, которая будет посылать на принтер строку текста в определенные координаты, т.е. у процедуры будет 3 аргумента: координаты X, Y и выводимый текст:
Private Sub Печать(x As Integer, y As Integer, Текст As String)
Printer.CurrentX = x
Printer.CurrentY = y
Printer.Print Текст
End Sub
7 Настало время запрограммировать кнопку Печать:
Private Sub cmdПечать_Click()
With Printer
.FontName = "Times New Roman Cyr"
.FontSize = 14
.FontItalic = True
.ScaleMode = vbCentimeters
Печать 9, 1, "Справка"
Печать 1, 2, "Дана " + txtФИО
Печать 1, 3, "в том, что " + cmbПол + " действительно _
обучается в Ростовском"
Печать 1, 4, "государственном университете путей сообщения"
Печать 1, 5, "на факультете " + cmbФакультет
.EndDoc
End With
End Sub
8 Запустите приложение. Для того, чтобы его отладить, необходим подключенный к Вашему компьютеру или к локальной сети, в которой находятся Ваши компьютер и принтер. Подготовьте принтер к работе, введите в поля пробные данные и напечатайте справку.
Дополнительное задание
Добавьте к справке текстовое поле для ввода курса, на котором учится студент. Причем ввод данных в это поле реализуйте с помощью элемента управления UpDown. Измените соответственно процедуру печати справки. Сохраните приложение.
Контрольные задания
Расширить возможность выбора в приложении следующих значений:
1) вуз;
2) факультет;
3) место, куда предоставляется справка;
4) отделение;
5) размер выплачиваемой стипендии;
6) отметка о проживании в общежитии;
7) данные о семейном положении;
8) сведения о родителях;
9) данные об общественной нагрузке;
10) сохраните все данные в базе данных и реализуйте функцию поиска и печати справки для конкретного студента.
Вопросы для самоконтроля
1 С помощью какого объекта можно получить доступ к принтеру из VB?
2 С помощью какого метода объекта Printer можно напечатать какую-нибудь строку?
3 Какой метод объекта Printer заканчивает формирование печатаемой страницы?
4 На каком расстоянии от начала страницы напечатается слово Привет! после выполнения следующей процедуры:
Private Sub cmdПечать_Click()
With Printer
.ScaleMode = vbInches
.CurrentX = 2.5
.CurrentY = 1
End With
Printer.Print «Привет!»
End Sub
5 С помощью какого свойства объекта Printer можно изменить шрифт печатаемого текста?
Библиографический список
1 Балена, Ф. Современная практика программирования на Microsoft Visual Basic и Visual С# / Ф. Балена, Д. Димауро. – Русская Редакция, 2006.
2 Геворкян, Г.X. Бейсик – это просто / Г.X. Геворкян, В.Н. Семенов. – Радио и связь, 1989.
3 Гринчишин, Я.Т. Алгоритмы и программы на Бейсике / Я.Т. Гринчишин. – М. : Просвещение, 1988.
4 Дьякриов, В.П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ : справочник / В.П. Дьякриов. – М. : Наука.
Гл. ред. физ.-мат. лит., 1987.
5 Кергаль, И. Методы программирования на Бейсике (с упражнениями) / И. Кергаль. – Мир, 1991.
6 Культин, Н.Б. Visual Basic. Освой на примерах / Н.Б. Культин. – БХВ-Петербург, 2004.
7 Лау, Тили. Visual Basic для детей (Уроки 1–5) / Тили Лау. – KIDware, 1998.
8 Лукин, С.Н. Visual Basic 6.0. Самоучитель для начинающих / С.Н. Лукин. – Диалог-МИФИ, 2001.
9 Макаширипов, С. Программирование баз данных на Visual Basic 5 в примерах / С. Макаширипов. – Спб. : Питер, 2006.
10 Сергеев, В. Visual Basic 6.0. Наиболее полное руководство для профессиональной работы в среде Visual Basic 6.0 / В. Сергеев. – БХВ-Петербург, 2004.
11 Симонович, С. Занимательное программирование. Visual Basic / С. Симонович, Г. Евсеев – АСТ-Пресс, Инфорком-Пресс, 2007.
12 Трояновский, В.М. Бейсик для начинающих и будущих профессионалов / В.М. Трояновский, В.Ф. Шаньгин – Высш. шк., 1992.
13 Фокселл, Дж.Д. Освой самостоятельно Visual Basic NET за 24 часа / Дж.Д. Фоксел. – Вильямс, 2002.
14 Хальворсон, М. Microsoft Visual Basic 6.0 для профессионалов. Шаг за шагом / М. Хальворсон. – Эком, 2005.
15 Шевякова, Д.А. Самоучитель Visual Basic 2005 / Д.А. Шевякова, А.М. Степанов, Р.Г. Карпов – БХВ-Петербург, 2006.
16 Эпплман, Д. Win32 API и Visual Basic для профессионалов / Д. Эпплман. – Спб. : Питер, 2001.
Для заметок
Для заметок
Учебное издание
Небаба Александр Николаевич
ИСПОЛЬЗОВАНИЕ MS VISUAL BASIC
ДЛЯ
РАЗРАБОТКИ WINDOWS-ПРИЛОЖЕНИЙ
Часть I
Начальный курс
Учебное пособие
Редактор Т.М. Чеснокова
Корректор Т.М. Чеснокова
Подписано в печать 10.10.2010. Формат 60х84/16.
Бумага газетная. Ризография. Усл. печ. л. 4,4.
Уч.-изд. л. 4,2. Тираж . Изд. № 118. Заказ №
Ростовский государственный университет путей сообщения.
Ризография РГУПС.
Адрес университета: 344038, Ростов н/Д, пл. Ростовского Стрелкового Полка Народного Ополчения, 2.
|