Рефераты

Реферат: Програмирование на Visual Basic

кнопка с названием “Добавить название”, текстовая строка для добавления

нового имени в список продавцов и кнопка “Конец”.

При щелчке по флажку “Двухколоночный” список в зависимости от состояния

флажка преобразуется в двухколоночный и обратно. Реализующая процедура

обработки события Check3_Click() содержит следующие операторы:

ПроцедураКомментарии

Sub Check3 Click() IfCheck3.Value = 0 Then List!.Columns = 1 Else List 1.Columns = 2 End If

End Sub

Свойство Value элемента Check равно 0, если флажок не взведен. В зависимости от значения этого свойства определяется свойство списка.(Listl.Columns = 1 - список одноколоночный, Listl.Columns = 2 -список двухколоночный)

При щелчке по кнопке “Очистить список” из списка фирм удаляются все элементы

с помощью метода Clear, а затем кнопка деактивизируется. Реализующая

процедура Command l_Click() содержит следующие операторы:

ПроцедураКомментарии
Sub Command I ClickQ List [.Clear Command L Enabled = False Command3.Enabled = False End SubОчистка списка Деактивация кнопки очистки списка Деактивация кнопки удаления элемента списка

Рис. 2.25

При щелчке по кнопке “Добавить элемент” содержимое текстовой строки

добавляется в список с помощью метода Additem. Список обладает свойством

автосортировки (добавление происходит в соответствии с упорядоченностью по

алфавиту). Происходит очищение текстовой строки и активизация кнопок “Удалить

элемент” и “Очистить список”. Это обеспечивается следующими операторами:

ПроцедураКомментарии
Sub CoiTimand4Click() Listl.AddItem Text2.Text Text2.Text = “” Command [.Enabled = True Command3. Enabled = True End SubДобавление нового имени в список Очистка текстовой строки. Активизация кнопок “Удалить элемент” и “Очистить список”

Для фиксации названия фирмы или удаления его из списка требуется

предварительно щелкнуть мышью по элементу списка. При обработке этого события

проверяется наличие элементов в списке и активизируются кнопки

“Зафиксировать”, “Удалить элемент” и “Очистить список”. Это обеспечивается

следующими операторами:

ПроцедураКомментарии

Sub Listi Click() If List 1. Listi ndex >= 0 Then

Command3.Enabled = True Command6. Enabled = True End If End Sub

Свойство Listlndex равно номеру выделенного элемента. Если ни один элемент не выделен, то его значение - 0 Активизация кнопки удаления элемента и фиксации элемента

В результате обработки события “щелчок мыши” по элементу списка форма примет

вид на рис. 2.26.

Рис. 2.26

При щелчке по кнопке “Удалить название” удаляется текущий выбранный элемент

из списка, деактивируется кнопка удаления списка и, при условии отсутствия

других элементов в списке, деактивируется кнопка “Очистить список”. Проверка

на пус

тоту списка осуществляется с помощью свойства ListCount,

значение которого равно числу элементов в списке. Это обеспечивается

следующими операторами:

ПроцедураКомментарии

Private Sub Command3 Clic() If Listi. Listi ndex >= 0 Then List 1. Remove Item List 1. List! ndex Command3.Enabled = False End If

If Listi. ListCount = 0 Then Command [.Enabled = False End If End Sub

Проверка на выбор элемента Удаление элемента из списка Деактивация кнопки удаления элемента списка, так как нет выделенных элементов в списке Проверка списка на пустоту. Если список пуст, то деактивация кнопки очистки списка

При щелчке по кнопке “Зафиксировать” выбранное название фирмы помещается в

текстовое окно “Описание модели”, деактивизируется рамка с названием “Список

фирм-дистрибьюторов” и все управляющие элементы, лежащие внутри рамки.

Процедура обработки события щелчка по кнопке “Зафиксировать” имеет следующий

вид:

В результате выполнения этой процедуры форма примет вид, показанный на рис.

2.27.

Рис. 2.27

На форме остались активными только два управляющих элемента: командная кнопка

“Конец” и тестовое окно “Описание модели”. В текстовое окно можно добавлять

собственный текст и редактировать имеющийся.

При нажатии на кнопку “Конец” работа программы завершается. Это

обеспечивается операторами:

Процедура

Комментарии

Sub Command2 Click() End End Sub

End - оператор завершения программы

Тексты всех процедур обработки событий примера:

Private Sub Check2_Click() If Check2.Value = 1 Then

Textl.Text = Textl.Text + Check2.Caption + Chr$(13) + Chr$(10)

Check2.Enabled = False End If End Sub

Private Sub Check3_Cli.ck() If Check3.Value = 0 Then

Listi.Columns = 1 Else

Listi.Columns = 2 End If End Sub

Private Sub Check4_Click () If Check4.Value = 1 Then

Check4.Enabled = False

Textl.Text = Textl.Text + Check4.Caption + Chr$(13) + Chr$(10) End If End Sub

Private Sub Combol_Click() Combol.Enabled = False

Textl.Text = Textl.Text + Combol.Text + Chr$(13) + Chr$(10)

Labell.Enabled = False Combo2.Enabled = True Label2.Enabled = True End Sub

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 -

    флажок, при установке когорого помечается пункт выбранною меню;

Рис 2 2S

  • Enabled - флажок, при установке которого пункт меню

    доступен;

  • Visible - флажок, при усгановке которого пункт

    меню виден;

  • кнопки изменения уровня пунктов меню;

  • кнопки изменения позиции пунктов меню на одном и том же уровне:
  • Кнопки 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 присваивается выделенный текст.

Рис. 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 возвращает

следующие значения:

Константа
vbOK1ОК
2Cancel
vbAbort3Abort
vbRetry4Retry
vblgnore5Ignore
vbYes6Yes
vbNo7No

Эти значения можно использовать для обработки результата работы пользователя

с окном MsgBox.

Процедура mnuHelpAbout_Click (обработка события щелчка мыши по пункту

меню “О программе”) обеспечивает вывод окна сообщения.

Процедура Form_Unload (Cancel As Integer) (обработка события щелчка мыши

по кнопке “Закрыть” раскрывающегося стандартного меню формы) обеспечивает выход

с подтверждением. Закрытие формы не обеспечивает корректного завершения

приложения. В этом случае присвоение Cancel =1 предотвращает закрытие формы и

обеспечивает корректный выход через процедуру mnuFileExit_Click.

Рис. 2.30

Разработанная программа имеет меню пользователя и обеспечивает функции

удаления, вставки и копирования при редактировании и выдачу сообщения о

программе (рис. 2.30—2.32).

Рис. 2.31

Рис. 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 до 2551 байт
BooleanЛогическийTrue или False2 байта
IntegerЦелые числаОт -32768 до 327672 байта
LongЦелые числа (длинные)От -2 147 483 648 до +2 147 483 6474 байта
String (variable-length)Символьный (переменной длины)От О до 2000000000 символов10 байт + длина строки
String (fixed-lengthСимвольный (фиксированной длины)От 0 до 2000000000 символов1 байт на 1 символ
CurrencyЧисло с фиксированной десятичной точкойОт -22337203685477,58 до 922337203685477,588 байтов
DateДатаОт January 1, 100 до December 31, 99998 байтов
ObjectОбъект4 байта
SingleВещественные числа

От± 1.4* Ю-45 до + 3.4*104-38

4 байта
DoubleВещественные числа

От+ 4.94* Ю-324 до+ 1.79* Ю-“308

8 байтов
VariantПроизвольный типЛюбой из перечисленных вышеЗависит от значения

Data (Дата) - определяет дату (месяц, день, год).

Object (Объект) - ссылка на объект (OLE).

String (Строка) - последовательность ASCII-символов.

Саггепсу (Валюта) предназначен для финансовых расчетов и имеет фиксированную

точность до четвертого знака после запятой (округляется).

Variant (Варьируемый) способен принимать любые значения (состоят из двух

частей: собственно значения и кода, указывающего исходный тип данного).

Под организацией данных понимается независимость отдельных данных (хранятся в

отдельных непоследовательных ячейках памяти) или их связанность (хранятся в

связанной последовательности ячеек памяти).

Связанными данными в Visual Basic 4 являются массивы (совокупность связанных

данных одного типа) и записи (совокупность связанных данных разных типов).

3.2.2. Константы

Константа - данное, значение которого однозначно определяется написанием и не

может быть изменено.

Пример:

3.1415926 6.02ЕЗ (значение 60200) 123 “Visual Basic “ “Иванов “

Для хранения постоянных величин Visual Basic позволяет объявить константы,

т.е. выделить участки памяти, содержимое которых не меняется (при попытке

модификации выдается сообщение об ошибке). Объявление констант осуществляется

оператором

[Public | Private] Const имя [As type] = выражение

Имя констант принято записывать прописными буквами (правила записи имен см.

ниже).

Значения ключевых слов следующие:

Public - константу можно использовать в любых процедурах и функциях;

Private - константу можно использовать только внутри модуля (см. ниже), в

котором она определена.

Пример:

Const /V= 3.1415926

Const MY_NAME = “Юра “

Тип константы можно не объявлять (устанавливается на основе значения — Const

CODE = 35 автоматически получит тип integer). Однако константа PI в

примере может быть любого из трех типов: single, double или currency. По

умолчанию принимается тип, занимающий наименьший объём памяти. Поэтому лучше

явно указывать тип специальными символами в операторах объявления констант.

Используемые символы показаны в таблице:

Символ объявления типаТип данных
%integer
&long
1single
#double
@currency
$string

Пример:

Const ONE& = / (резервирует 4 байта)

Const ONE# = 1 (резервирует 8 байтов, хранится в виде числа

двойной точности с плавающей точкой).

В Visual Basic имеется большое число встроенных констант, значения которых

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

Примерами таких констант являются:

vbOKCancel = 1 — аргумент функции MsgBox для вывода в диалоговом окне

командных кнопок ОК и Cancel;

vbYesNoCancel = 3 — аргумент функции MsgBox для вывода в диалоговом окне

командных кнопок Yes, No, Cancel;

vbOk = 1 — значение, которое возвращает MsgBox, если пользователь

щелкнул по кнопке ОК в диалоговом окне;

  • vbCancel = 2 - значение, которое возвращает MsgBox, если

    пользователь щелкнул по кнопке Cancel в диалоговом окне.

Полную информацию о встроенных константах можно найти в Object Browser.

Кроме того, в комплекте Visual Basic имеется файл CONSTANT.TXT, содержащий

десятки часто используемых констант. Необходимые константы могут быть

скопированы в программу. 3.2.3. Имена

Имена используются для обозначения объектов в программе (константа является

объектом программы). Правила образования имен:

  • первым символом имени должна быть латинская буква;
  • имя

    может включать только латинские буквы, цифры и знак подчеркивания (_);

  • имя может содержать не более 40 символов;

  • ключевые слова или

    Reserved word (Зарезервированные слова) не могут использоваться в качестве

    имен (список ключевых слов содержится в справочной системе Visual Basic в

    разделе Reserved word).

Примеры:

Правильные имена Неправильные имена StartTime CM*PER*INCH

А2 23В

color File (ключевое слово) • VariableName BMW_360

Хорошим тоном при программировании на любом языке является осмысленный выбор

имен для объектов программы (присваивать объектам имена, соответствующие

контексту и несущие описательную нагрузку). В качестве примера можно привести

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

запускающей программу btnStart_CUck: первая часть имени состоит из

сокращения слова кнопка (button — btn) и слова Start, вторая часть определяет

событие — Click.

3.2.4. Оператор объявления

Оператор объявления резервирует в памяти место для хранения данных

определенного типа и организации и присваивает ему имя, по которому

производится обращение к данным.

Оператор имеет вид:

Global имя [({описатель})} [As [New] тип} [, имя [([описатель])]

[As [New]w“n] ] . . .

Dim, Global, As, New — ключевые слова (Global используется для объявления

глобальных данных (см. ниже). New используется для создания нового объекта на

основе существующих объектов, например формы);

имя — имя объекта (имя переменной, массива);

тип - тип данных;

описатель — определяет организацию данных (например, массива,

см. ниже).

Пример:

Dim Name, YourName As String, N As Integer,

Money As Currency,

SiirName As String* 15

(переменная SurName определена как символьная фиксированной длины в 15

символов).

При описании имен прописные и строчные буквы воспринимаются одинаково. Однако

после определения ссылки на эту переменную должны соответствовать последней

форме записи (производится автоматическое преобразование текста программы).

Visual Basic допускает использование имен без объявления их типа (в этом

случае автоматически определяется тип, требующий для размещения минимальной

памяти), однако целесообразно и является признаком хорошего тона явно

объявлять типы используемых данных.

Из рассмотренных в предыдущей главе примеров программ для работы с формами и

управляющими элементами известно, что любая программа состоит из формы и

элементов управления, которым поставлены в соответствие процедуры. Более

сложные программы могут включать несколько форм.

Существует понятие области действия (scope) данных, определяющее возможность

доступа к тем или данным (например, к переменной) в отдельных процедурах

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

Если оператор объявления какой-либо переменной находится внутри процедуры

обработки события, то доступ к этой переменной (возможность ее использования)

возможен только в рамках данной процедуры. Такая переменная называется

локальной (local).

Для того чтобы одна и та же переменная могла использоваться в разных

процедурах одной формы, оператор объявления переменных должен быть помещен в

раздел общих объявлений (general), доступ к которому открывается щелчком мыши

по элементу “general” раскрывающегося списка окна Object формы. Объявленная

таким образом переменная имеет статус действующей на уровне модуля (modul-

level variable) и может использоваться (доступна) в любой процедуре данной

формы. Для того чтобы одна и та же переменная могла использоваться в

процедурах разных форм одной программы она должна быть объявлена как

глобальная переменная (global variable). Используется ключевое слово Global

вместо Dim.

Пример:

Global Name, YourName As String, N As Integer, Money As Currency,

SurName As String* 75

Операторы объявления глобальных переменных помещаются в-модулях кода (code

modules, см. ниже) и эти переменные могут использоваться во всей программе.

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

В Форме 1 переменная Р объявлена в разделе общих объявлений (general)

формы и может быть использована как в Процедуре X, так и в Процедуре Z.

Изменение значения переменной в одной из процедур влечет за собой изменение и в

другой процедуре.

Рис. 3.1

Объявленные переменные И в Процедуре Х и G в Процедуре Z Формы 1

определены только внутри этих процедур, аналогично переменной G в

Процедуре_У Формы 2. Эти переменные определены только в рамках своих процедур.

Более того, для одноименных переменных G в Процедуре Z и в Процедуре Y

выделяются разные ячейки памяти и изменение значения переменной

G в одной из процедур не влечет изменения значения в другой процедуре.

Переменные А и В определены как глобальные для всей программы и

доступны во всех процедурах Формы 1 и Формы 2. Изменение значения переменных в

одной из процедур одной из форм влечет изменение значений в других процедурах и

формах.

Рассмотренные области действия переменных справедливы и для других

объявляемых данных (констант, пользовательских типов данных, массивов и др.).

Как было сказано выше, описания глобальных данных помещаются .в модуль кода.

Определения формы и все связанные с ней программы хранятся в отдельном файле

с расширением .FRM. Программы, состоящие из нескольких форм и соответственно

из нескольких таких файлов, размещаются в файлах модулей кода с расширением.

Такие файлы создаются при выборе в меню Insert (Вставить) команды Module

(Создать модуль) или при щелчке мыши на одноименной кнопке панели

инструментов.

3.2.5. Пользовательские типы данных (записи)

Данные различных типов можно сгруппировать по какому-либо признаку в удобную

для использования одну структуру. В ряде языков программирования такие

структуры называются записями (records).

Оператор объявления пользовательского типа данных (записи) помещается в

модуль и имеет вид:

Type имя записи имя элемента записи [(описатель)} As тип

[имя элемента записи [(описатель)} As тип}

End Type

Оператор создает указанную структуру данных, но не выделяет под неё память.

Память выделяется рассмотренным оператором описания, в котором в качестве типа

указывается имя записи (имя пользовательского типа данных).

Пример:

Dim Student_l, Student_2 As Student Описаны два имени

(Student_l, Student_2 ), для каждого из которых определены заданные в

структуре компоненты (Familia, Name, Voyast, Birthdate, Length, Wegith)

и для хранения значений которых выделяется память соответственно заданному типу

(длине и способу представления).

Для обращения к конкретному свойству (элементу структуры) определенного

объекта используется составная запись

имя переменной.элемент структуры

Например, Student'_]. Birthdate определяет дату рождения студента Student_7.

3.2.6. Массивы

Массив - упорядоченный набор однотипных данных, обозначенный одним именем.

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

типов данных (одинаковых записей), однотипных элементов пользовательских

типов данных.

Массив объявляется уже рассмотренным оператором

{Dim | Global [ Static) имя [({описатель})} [As [New] тип} [, имя

[([описатель])} [As [NewJ/гаил] ] . . . где описатель имеет следующий

синтаксис:

[нижняя граница То ]верхняя граница[,[нижняя граница То] верхняя граница] . .

нижняя граница определяет минимальное значение индекса массива (целого типа);

верхняя граница определяет максимальное значение индекса массива (целого типа);

То — ключевое слово.

Количество повторений [нижняя граница То [верхняя граница

определяет размерность массива (количество индексов, используемое для

определения элементов массива). Максимальное число индексов равно 60.

Static в процедурах и функциях позволяет сохранить значения элементов

объявленного таким образом массива между вызовами этих процедур или функций.

Пример различного способа объявления одного и того же массива:

  • Dim A(8,3) As Double Dim A(6>To 8, О То 3)

    As Double Dim A(8, OTo 3} As Double

Объявляется двухмерный массив (два индекса). Нижняя граница обоих индексов

равна 0 (принимается по умолчанию). Верхняя граница первого индекса равна 8,

второго — 3. Массив состоит из 36 элементов (9*4=36) одинакового типа

(вещественный) и каждый элемент занимает 8 байтов.

Границы значений индексов: от —32768 до 32767.

Примеры:

Dim A(—4 То 10} As Integer

Dim B(—99 То —5, —3 То 0) As String

Элементы массива занимают связанную последовательную область в памяти машины.

Массив А в примере занимает в памяти машины последовательность из 15

ячеек памяти, каждая из которых имеет длину 2 байта (тип Integer имеет длину 2

байта, рис. 3.2).

Многомерные массивы также занимают линейную последовательную область памяти.

При этом важное значение имеет способ упорядочения элементов многомерных

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

В Visual Basic многомерные массивы упорядочиваются в памяти машины так, что

быстрее всего меняется левый индекс. Например, двумерный массив (в прикладных

математических программах матрицы представляются двумерным массивом) А (2,3),

состоящий из 12 элементов, располагается в памяти машины следующим образом:

А(0,0), А(1,0), А(2,0), А(0,1), А(1,1), А(2,1), А(0,2), А(1,2), А(2,2),

А(0,3), А(1,3), А(2,3) (если данный

массив представляет матрицу, то в памяти машины она упорядочивается по

столбцам).

Для рассмотренного пользовательского типа данных (записи) Student можно также

объявить массив оператором Dim MasStudent (25) As Student

Объявляется одномерный массив MasStudent, состоящий из 26 элементов,

каждый из которых является одной записью:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8


© 2010 Собрание рефератов