Програмирование на Visual Basic
Private Sub Combo2_Click() Combo2.Enabled = False Label2.Enabled = False
Private Sub Cornmand4_Click () Listl.AddItem Text2.Text Text2.Text = “”
Commandl.Enabled = True End Sub
• Private Sub Command2_Click() End End Sub
Private Sub Command5_Click() Check2.Enabled = False Check4.Enabled = False
Frame2.Enabled = False HScroill.Enabled = False Label4.Enabled = False
Label5.Enabled = False Label6.Enabled = False Label7.Enabled = False
Lab.el8 .Enabled = False Commands.Enabled = False
Textl.Text = Textl.Text + Label5.Caption + “Л.С” + Chr$(13) + Chr$(10)
Framel.Enabled = True Listi.Enabled = True Text2.Enabled = True
Command4.Enabled = True Check3.Enabled = True Commandl.Enabled = True End
Sub
Private Sub Command6_Click() ‘If Listl.ListIndex >= 0 Then
Textl.Text = Textl.Text + Listl.Text + Chr$(13) + Chr$(10)
Framel.Enabled = False Listi.Enabled = False Text2.Enabled = False
Command4.Enabled = False Check3.Enabled = False Commandl.Enabled = False
Command6.Enabled = False Commands.Enabled = False End If End Sub
Textl.Text = Textl.Text + Combo2.Text + Chr$(13) + Chr$(10)
If Combo2.Text .= “Красный” Then LabelS.BackColor = &HFF& Elself
Combo2.Text = “Белый” Then LabelS.BackColor = &HFFFFFF Elself Combo2.Text =
“черный” Then LabelS.BackColor = &HO Elself Combo2.Text = “Синий” Then
LabelS.BackColor = &HFFOOOO Elself Combo2.Text = “Зеленый” Then
LabelS.BackColor = &HCOOO&
End If
Combo3.Enabled = True
Label3.Enabled = True
End Sub
Private Sub Combo3_Click() Combo3.Enabled = False Label3.Enabled = False
Textl.Text = Textl.Text + Combo3.Text + Chr$(13) + Chr$(10)
Frame4.Enabled = True ‘ “ Optioni.Enabled = True Option2.Enabled = True
Option3.Enabled = True End Sub
Private Sub Commandl Click () Listi.Clear ~ Commandl.Enabled = False End
Sub
• Private Sub Command3_Click() If Listl.ListIndex >= 0 Then
Listi.Removeltem Listl.ListIndex
Command3.Enabled = False End If If Listi.ListCount = 0 Then
Commandl.Enabled = False End If End Sub Private Sub Form_Load()
Label4.Caption = Str$(HScrolll.Value * 735.499 / 1000)
Label5.Caption = Str$(HScrolll.Value) Combol.Addltem “Мерседес”
Combol.Addltem “Ауди” Combol.Addltem “Фольксваген” Combol.Addltem “Шкода”
Combol.Addltem “Рено” Combol.Addltem “Пежо” Combol.Addltem “Запорожец”
Combo2.Addltem “Красный” Combo2.Addltem “Бельм” Combo2.Addltem “черный”
Combo2.Addltem “Синий” Combo2.Addltem “Зеленый” Combo3.Addltem “Люкс”
СотЬоЗ.Addltem “Стандарт” Combo3.Addltem “Минимум” Listl.Addltem
“MusaMotors” Listi.Addltem “Savva” Listl.Addltem “A3P” Listl.Addltem
“ЛогоВАЗ” Listl.Addltem “ЛадаИнжениринг” End Sub
Private Sub HScrolll_Change()
Label4.Caption = Str$(HScrolll.Value * 735.499 / 1000)
Labels.Caption = Str$(HScrolll.Value) End Sub
Private Sub Listl_Click() If Listl.Listlndex >= 0 Then Command3.Enabled =
True Command6.Enabled = True End If End Sub
Private Sub Optionl_Click() Frame4.Enabled = False Optioni.Enabled = False
Option2.Enabled = False Option3.Enabled = False
Textl.Text = Textl.Text + Optioni.Caption Chr$(13) + Chr$(10)
Check2.Enabled = True
Check4.Enabled = True
Frame2.Enabled = True
HScrolll.Enabled = True
Label4.Enabled = True
Labels.Enabled = True
Label6.Enabled = True
Label7.Enabled = True
Labei8.Enabled = True
Commands.Enabled = True End Sub
Private Sub Option2_Click() Frame4.Enabled = False Optionl. Enabled = False
Option2.Enabled = False Option3.Enabled = False
Textl.Text = Textl.Text + Option2.Caption + Chr$(13) + Chr$ (10)
Check2.Enabled = True Check4.Enabled = True Frame2.Enabled = True
HScrolll.Enabled = True Label4.Enabled = True Labels.Enabled = True
Label6.Enabled = True Label7.Enabled = True Labels.Enabled = True
Commands.Enabled = True End Sub
Private Sub Option3_Click() Frame4.Enabled = False Optioni.Enabled = False
Option2.Enabled = False Option3.Enabled = False
Textl.Text = Textl.Text + Option3.Caption > Chr$(13) + Chr$ (10)
Check2.Enabled = True Check4.Enabled = True Frame2.Enabled = True
HScrolll.Enabled = True Label4.Enabled = True Ldbel5. Ei-icioled = True
Ldnei6.EnDied = True LdDpl7 . L.Jt,ied = Tr.Je Lctbel8 . Er.dbied = True
CoiTimand . Ј.ndbled = Tru Ei-ici Sub
2.13. МЕНЮ ПОЛЬЗОВАТЕЛЯ
Важным элементом GUI является стандартное меню пользователя. Visual Basic
имеет специальное средство для создания меню пользоваюлеи приложениями -
Menu Editor (Проектировщик меню). Это срелс-жо нозволяег построить меню
соответственно общим принципам рассмо1ренного событпиного управления для
форм и элементов управления. Меню пользоваге-ля создается выстраиванием
элементов меню в соответствии с необходимой их иерархией с помощью
Проектировщика меню.
Для вызова проектировщика меню нужно вызвать команду Menu Editor... из меню
Tools или щелкнуть кнопку Menu Editor на панели инструментов Главного меню.
При этом появится окно Menu Editor (рис.2.28). элемешы которою имеюг
следующее назначение:
. Caption примеияегся для ввода названии элементов списка меню,
используемых в диадою (например, Фаил, Edit и т.н.):
для создания разделительной черш (разделяет функциональные группы пунктов
меню) вместо имени вводтся символ “-“;
. Name иснользуегся для ввода имен элементов списка меню, используемых
при написании нро1раммы (аналогично свойству Name для форм и элементов
управления);
. Index - индекс элемеша списка диало1а в массиве (при использовании
массива элемента списка диалога);
. Shortcut - раскрывающийся список комбинаций клавиш, из которого можно
выбрагь комбинацию “горячих” клавиш эле-менюв списка меню;
. Windows List - флажок, при установке которого меню содержит список (л
крытых окон в многооконном приложении (MDI-приложения):
. HelpConiextID - индекс для поиска в HelpFile;
. Checked - флажок, при установке когорого помечается пункт выбранною
меню;
[pic]
Рис 2 2S
. Enabled - флажок, при установке которого пункт меню доступен;
. Visible - флажок, при усгановке которого пункт меню виден;
. кнопки изменения уровня пунктов меню;
[pic]
. кнопки изменения позиции пунктов меню на одном и том же уровне:
. Кнопки Next, Insert. Delete обеспечивают переход к следующему пункгу
меню, вставку и удаление пункта.
Рассмотрим использование проектировщика меню на примере разработки простого
редактора, который обеспечивает ввод и редактирование строк символов,
запись выделенного фрагмента в буфер и всгавку из буфера. Доступ к буферу
обмена можно получить через объект Clipboard, для которого определены
следующие методы:
. SetText записывает копию выделенного текста в буфер обмена;
. GetText () возвращает копию текстового содержимого буфера обмена;
. SetData записывает копию выделенного рисунка в буфер обмена;
. Get Data () возвращает содержимое (рисунок) буфера обмена;
. GetFormat () определяет, является ли содержимое буфера обмена текстом
или рисунком;
. Clear очищает содержимое буфера обмена.
Разместим на форме (имя - Formi, Caption - Редактор) многострочное
текстовое окно (имя - txlEdilBox), размеры которого совпадают с размером
формы, для ввода и редактирования текста. Меню редактора включает
раскрывающиеся меню: Файл (Новый, Открыть..., Сохранить, Сохранить как....
Выход), Правка (Вырезать, Копировать, Вставить), Справка (О программе). В
скобках указаны пункты соответствующих раскрывающихся меню. Это меню
создается с использованием Menu Editor.
На рис. 2.29 показано окно Menu Design Windows в момент проектирования.
Выделен элемент меню “Копировать” (свойство Caption - ^.Копировать, имя -
mnuEdifCopy, “горячая” клавиша -Ctrl+C). Вставка символа “&” означает
задание “горячей” клавиши. Символы “....” обозначают переход на следующий
уровень иерархии пунктов меню (“Копировать” является подпунктом меню
“Файл”) и задаются кнопками изменения уровня пунктов меню.
Аналогично имени mnuEditCopy образуются имена остальных пунктов меню,
которые используются для записи программы (nmuEditCut, mnuEditPaste,
mnuFileExit, mnuHelpAbout, mnuFileNew, mnuFileOpen, mnuFileSave,
mnuFileSaveAs, mnu File Exit}.
Тексты процедур обработки событий следующие:
Sub Form_Resize ()
txtEditBox.Height = ScaleHeight txtEditBox.Width = ScaleWidth
End Sub
Sub mnuEditCopy_Click ()
Clipboard.Clear 'очистить буфер
Clipboard.SetText txtEditBox.SeiText
'поместить 'выделенный текст в буфер End Sub
Sub mnuEditCut_Click ()
Clipboard.Clear 'очистить буфер Clipboard.SetText
txtEditBox.SeiText
'поместить 'выделенный текст в буфер txtEditBox.SeiText = “”
'удаление выделенного
'текста End Sub
Sub mnuEditPaste_Click ()
txtEditBox.SeiText = Clipboard.GetText() End Sub
Sub mnuFileExit_Click ()
If MsgBox(“Выход?”,1+32,”Подтвердить”)=lThen End
End Sub
Sub mnuHelpAbout_Click ()
MsgBox “Мой редактор на Visual Basic”,64,”О программе” • End Sub
Sub Form_Unload (Cancel As Integer)
Cancel = 1
mnuFileExit_Click End Sub
Процедура Form_Resiy (обработка события изменения размера формы)
обеспечивает автоматическое изменение размеров текстового окна при
изменении размеров формы.
Процедура mnuEditCopy_Click (обработка события щелчка мыши по пункту меню
“Копировать”) обеспечивает запись выделенного текста в буфер. Используются
рассмотренные выше методы для объекта Clipboard и методы для текстового
окна (операторы Clipboard. Clear и Clipboard.SetText txtEditBox. SeiText).
Во втором операторе txtEditBox. SeiText присваивается выделенный текст.
[pic]
Рис. 2.29
Процедура mnuEditCut_Click (обработка события щелчка мыши по пункту меню
“Вырезать”) обеспечивает перед удалением сохранение выделенного текста в
буфере.
Процедура mnuEditPaste_Click (обработка события щелчка мыши по пункту меню
“Вставить”) обеспечивает вставку текста из буфера (в данном случае
отсутствие при вставке выделения означает вставку в позицию курсора).
Процедура mniiFileExit_Click (обработка события щелчка мыши по пункту меню
“Выход”) обеспечивает выход из редактора. Оператор End обеспечивает
корректный выход из приложения (закрывает файлы и освобождает память). В
процедуре используется функция MsgBox для вывода окна сообщения. Синтаксис
ее применения следующий:
MsgBox сообщение [, тип окна] [, заголовок окна]
где
сообщение - текст сообщения;
тип окна - это сумма значений, определяющих число и тип кнопок на
диалоговом окне, стиль пиктограмм, используемых в окне, и др. спецификации.
В таблице приведены некоторые значения аргументов и их описание:
|Значение |Описание |
|типа | |
|0 |Выводить только кнопку OK |
|| |Выводить кнопки OK и Cancel |
|2 |Выводить кнопки Abort, Retry, |
| |Ignore |
|3 |Выводить кнопки Yes, No, Cancel |
|4 |Выводить кнопки Yes, No |
|5 |Выводить кнопки Retry, Cancel |
|16 |Выводить пиктограмму “Стоп” |
|32 |Выводить пиктограмму “?” |
|48 |Выводить пиктограмму “!” |
|64 |Выводить пиктограмму информации |
|0 |Кнопка по умолчанию - первая |
|256 |Кнопка по умолчанию - вторая |
|512 |Кнопка по умолчанию - третья |
|0 |Программное ведущее диалоговое окно|
|4096 |Системное ведущее диалоговое окно |
Первая группа значений (0-5) описывает номер и тип кнопок, отображаемых в
диалоговом окне; вторая группа (16, 32, 48, 64) описывает стиль пиктограммы
(иконки); третья группа (0, 256, 512) определяет кнопки по умолчанию;
четвертая группа (0, 4096) определяет выводимые окна сообщения (0 - окно
ввода для окончания работы приложения, 4096 - окно ввода для окончания
работы системы).
В качестве значения аргумента может указываться сумма значений типа по
одному из каждой группы. Например, в операторе
MsgBox “Удалить ?”, 52
значение аргумента 52 является суммой 48 и 4 (48 - вывод пиктограммы с
восклицательным знаком, 4 - кнопки “Yes” и “No”). Функция MsgBox возвращает
следующие значения:
|Константа | | |
| | | |
|vbOK |1 |ОК |
| |2 |Cancel |
|vbAbort |3 |Abort |
|vbRetry |4 |Retry |
|vblgnore |5 |Ignore |
|vbYes |6 |Yes |
|vbNo |7 |No |
Эти значения можно использовать для обработки результата работы
пользователя с окном MsgBox.
Процедура mnuHelpAbout_Click (обработка события щелчка мыши по пункту меню
“О программе”) обеспечивает вывод окна сообщения.
Процедура Form_Unload (Cancel As Integer) (обработка события щелчка мыши по
кнопке “Закрыть” раскрывающегося стандартного меню формы) обеспечивает
выход с подтверждением. Закрытие формы не обеспечивает корректного
завершения приложения. В этом случае присвоение Cancel =1 предотвращает
закрытие формы и обеспечивает корректный выход через процедуру
mnuFileExit_Click.
[pic]
Рис. 2.30
Разработанная программа имеет меню пользователя и обеспечивает функции
удаления, вставки и копирования при редактировании и выдачу сообщения о
программе (рис. 2.30—2.32).
[pic]
Рис. 2.31
[pic]
Рис. 2.32 Глава 3. Программирование на VISUAL BASIC 4
3.1. АЛФАВИТ
Visual Basic является языком программирования. Как любой другой язык,
например, русский, английский или язык программирования Pascal, он имеет
свой алфавит, используемый для написания операторов или предложений Visual
Basic. Алфавит Visual Basic включает:
. 26 латинских букв: А, В, С, D, Е, F, G, H, I, J, К, L, М, N, О, Р, Q,
R, S, Т, U, V, W, X, Y, Z;
. 10 арабских цифр: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0;
. 26 символов: !#$%&л*()+-/\<>=?@_|:'.,“ ” пробел.
Другие символы, определенные на клавиатуре, включая русские, можно
использовать только в строках символов.
3.2. ДАННЫЕ
3.2.1. Классификация данных
Данные характеризуются типом и организацией. Тип данных обобщает
следующие понятия:
. размещение в ЭВМ;
. способ представления;
. прикладной смысл.
Размещение. Данные и программа в момент выполнения размещаются в
оперативной памяти (ОП) ЭВМ, которая состоит из пронумерованных ячеек,
каждая из которых вмещает 1 байт данных (1 байт состоит из 8 битов, каждый
из которых может содержать элемент двоичных данных - 0 или 1). Номер
определенной ячейки называется адресом. Одного байта для хранения данного
как правило недостаточно и данное занимает непрерывную последовательность
байтов (2, 4, 8 байтов).
Способ представления. Последовательность битов в байтах данного кодирует
всю необходимую информацию, определяющую данное. Правила кодирования и их
реализация в разных ЭВМ определяют способ представления данного. Так, для
числовых данных существует способ представления с фиксированной точкой и с
плавающей точкой.
Прикладной смысл. Определяет возможность использования данных для тех или
иных целей (с арифметическими данными можно производить вычисления, из
символов можно строить слова и предложения).
В Visual Basic 4 определены следующие типы данных:
. байт (BYTE);
. логический (BOOLEAN);
. дата (DATE);
. короткий целый ( INTEGER);
. длинный целый (LONG);
. простой вещественный (SINGLE);
. удвоенной точности вещественный (DOUBLE);
. коммерческий (CURRENCY);
. строковый (STRING);
. объект (OBJECT);
. переменный (VARIANT).
В табл. 3.1 приводятся характеристики этих типов данных:
Таблица 3.1
|Тип |Описание |Диапазон |Занимаема|
|данных| |значении |я память |
|Byte |Двоичные |От 0 до 255 |1 байт |
| |данные | | |
|Boolea|Логический |True или False |2 байта |
|n | | | |
|Intege|Целые числа |От -32768 до |2 байта |
|r | |32767 | |
|Long |Целые числа |От -2 147 483 |4 байта |
| |(длинные) |648 до +2 147 | |
| | |483 647 | |
|String|Символьный |От О до |10 байт +|
|(varia|(переменной |2000000000 |длина |
|ble-le|длины) |символов |строки |
|ngth) | | | |
|String|Символьный |От 0 до |1 байт на|
|(fixed|(фиксированн|2000000000 |1 символ |
|-lengt|ой длины) |символов | |
|h | | | |
|Curren|Число с |От |8 байтов |
|cy |фиксированно|-22337203685477,| |
| |й десятичной|58 до | |
| |точкой |922337203685477,| |
| | |58 | |
|Date |Дата |От January 1, |8 байтов |
| | |100 до December | |
| | |31, 9999 | |
|Object|Объект | |4 байта |
| | | | |
|Single|Вещественные|От± 1.4* Ю-45 до|4 байта |
| |числа |+ 3.4*104-38 | |
|Double|Вещественные|От+ 4.94* Ю-324 |8 байтов |
| |числа |до+ 1.79* Ю-“308| |
|Varian|Произвольный|Любой из |Зависит |
|t |тип |перечисленных |от |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
|