Электронная библиотека » Евгений Матвеев » » онлайн чтение - страница 14


  • Текст добавлен: 16 октября 2020, 08:02


Автор книги: Евгений Матвеев


Жанр: Прочая образовательная литература, Наука и Образование


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 14 (всего у книги 18 страниц)

Шрифт:
- 100% +
13.2. Обзор процедур по работе реестром

В первых версиях Windows приложения хранили свои переменные конфигурации в текстовом файле WIN.INI. Современные приложения, работающие под управлением операционной системы Windows 95 и выше, размещают конфигурационные данные в реестре Windows.

Приложения, написанные на языке Visual Basic, могут сохранять информацию в данном разделе реестра:


Мой компьютерHKEY_CURRENT_USERSOFTWAREVB and VBA Program Settings


Удобство использования ветки реестра HKEY_CURRENT_USER заключается в том, что он относится к текущему пользователю Windows. Поэтому, у каждого пользователя в реестре будут храниться свои личные настройки вашего приложения.

Для работы с реестром предусмотрены следующие встроенные процедуры:

SaveSetting (Сохранить настройку),

GetSetting (Прочитать настройку),

GetAllSettings (Прочитать все настройки),

DeleteSetting (Удалить настройку).

13.3. Сохранение настроек

Сохранение переменных конфигурации в реестре Windows осуществляется процедурой SaveSetting (Сохранить настройку):


SaveSetting ИмяПриложения, Раздел, Параметр, Значение


Все аргументы данной процедуры строкового типа и могут содержать любые допустимые выражения. На самом деле, названия аргументов имя приложения и раздел достаточно условны, так как они обозначают лишь соответствующие разделы реестра, находящиеся внутри VB and VBA Program Settings:


VB and VBA Program SettingsИмяПриложенияРаздел



Аргумент параметр содержит название строкового параметра, куда записывается значение переменной конфигурации. Если значение содержит тип данных, отличный от строкового типа, процедура SaveSetting (Сохранить настройку) автоматически преобразует его в строку. Например, числовое значение 123 будет сохранено в реестре как строка «123».

Приведем пример, в котором производится сохранение значения свойства Height (Высота) текущей формы:


SaveSetting App. EXEName, Form1.Name, «Height», Form1.Height


Имя приложения здесь берется из свойства EXEName (Имя исполняемого файла) стандартного объекта App (Приложение), содержащего имя исполняемого файла работающего приложения. Раздел получает свое название согласно свойству Name (Имя) текущей формы. Параметр называется «Height» и ему присваивается значение одноименного свойства формы Height (Высота).

Этот пример можно упростить, записав его в другом виде, уже без упоминания имени объекта Form1:


SaveSetting App. EXEName, Name, «Height», Height


13.4. Восстановление настроек

Прочитать из реестра сохраненную ранее переменную конфигурации можно с помощью функции GetSetting (Прочитать настройку):


GetSetting (ИмяПриложения, Раздел, Параметр, [ЗначениеПоУмолчанию])


Первые три аргумента не отличаются от одноименных аргументов процедуры SaveSetting (Сохранить настройку). При отсутствии в реестре указанного параметра функция возвращает пустую строку. Значение по умолчанию полезно использовать тогда, когда в этом случае нужно получить какое-то конкретное значение.

Пример использования данной функции для чтения параметра «Height» из реестра и присвоения полученного значения свойству Height (Высота) текущей формы:


Height = GetSetting (App. EXEName, Name, «Height», Height)


В случае отсутствия в реестре параметра «Height», свойство формы Height (Высота) не изменяется, так как тогда функция GetSetting (Прочитать настройку) возвращает это же самое значение.

Другая функция GetAllSettings (Прочитать все настройки) предоставляет возможность программисту получить все параметры указанного раздела реестра в виде массива типа Variant (Варьируемый):


GetAllSettings (ИмяПриложения, Раздел)


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


Dim SetArray () As String ‘ объявляем динамический массив

Dim i As Integer, j As Integer ‘ объявляем переменные циклов

SetArray = GetAllSettings (App. EXEName, Name) ‘ считываем настройки в переменную SetArray

For i = LBound (SetArray, 1) To UBound (SetArray, 1)

For j = LBound (SetArray, 2) To UBound (SetArray, 2)

Print SetArray (i, j),; ‘ распечатываем параметр и значение

Next

Print ‘ переводим строку

Next


Сначала объявляется динамический массив строкового типа SetArray и переменные циклов. Затем в массив SetArray заносятся все сохраненные ранее настройки из реестра с помощью функции GetAllSettings (Прочитать все настройки).

Таким образом, теперь SetArray представляет собой двухмерный массив, с неизвестным заранее числом элементов. Для того, чтобы распечатать содержимое этого массива, нужно знать максимальное и минимальное значение индексов каждой размерности, которые нам помогут выяснить функции LBound (Нижняя граница) и UBound (Верхняя граница).

13.5. Удаление настроек

При деинсталляции приложения считается хорошим тоном программирования, когда в реестре удаляются вся сохраненная ранее информация. Делается это с помощью процедуры DeleteSetting (Удалить настройку):


DeleteSetting ИмяПриложения, [Раздел], [Параметр]


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

Примеры использования процедуры DeleteSetting (Удалить настройку):


DeleteSetting App. EXEName

DeleteSetting App. EXEName, Name

DeleteSetting App. EXEName, Name, «Height»

13.6. Пример работы с конфигурацией

Теперь пришло время показать, как можно практически использовать сохранение/восстановление переменных конфигурации для запоминания текущих размеров и местоположения формы между запусками приложения.

Откройте окно кода и введите текст процедуры обработки события Form_Unload, которая будет выполняться при закрытии приложения и выполнять сохранение высоты, ширины и координат левого верхнего угла формы:


Private Sub Form_Unload (Cancel As Integer)

SaveSetting App. EXEName, Name, «Height», Height

SaveSetting App. EXEName, Name, «Width», Width

SaveSetting App. EXEName, Name, «Top», Top

SaveSetting App. EXEName, Name, «Left», Left

End Sub


Также, создайте процедуру Form_Load, которая будет выполняться при открытии формы и загружать сохраненные настройки, присваивая считанные из реестра значения свойствам самой формы:


Private Sub Form_Load ()

Height = GetSetting (App. EXEName, Name, «Height», Height)

Width = GetSetting (App. EXEName, Name, «Width», Width)

Top = GetSetting (App. EXEName, Name, «Top», Top)

Left = GetSetting (App. EXEName, Name, «Left», Left)

End Sub


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

Чтобы увидеть то, что сохранилось в реестре, используем стандартное приложение Windows – Редактор реестра (Registry Editor), которое позволяет не только просматривать системный реестр, но и изменять его.



В главном меню Windows выберите команду Пуск – Выполнить… (Start – Run…). Появится диалог Запуск программы (Run Program) (Рис.13.1).


Рис.13.1. Диалог Запуск программы (Run Program)


Введите в поле Открыть (Open) название исполняемого файла приложения Редактор реестра (Registry Editor):


REGEDIT


Нажмите кнопку OK. Запустится приложение Редактор реестра (Registry Editor) (Рис.13.2).


Рис.13.2. Приложение Редактор реестра (Registry Editor)


Щелкая мышью на значках в левой части окна приложения Редактор реестра (Registry Editor), найдите следующий раздел реестра:

Мой компьютерHKEY_CURRENT_USERSOFTWAREVB and VBA Program Settings


Обратите внимание, что внутри него появился раздел Project1, соответствующий названию нашего тестового приложения, содержащий подраздел Form1, относящийся к конкретной форме.

Щелкните мышью на названии раздела Form1. В правой части окна отобразится список параметров со значениями, находящихся в данном разделе (Рис.13.3).


Рис.13.3. Раздел Form1 с сохраненными параметрами

при просмотре через Редактор реестра (Registry Editor)


Ознакомьтесь с содержимым раздела Form1, а затем закройте окно приложения Редактор реестра (Registry Editor).

Глава 14. Обмен данными между приложениями

В этой главе вы научитесь:

• разбираться в технологиях обмена данными,

• программировать обмен данными между приложениями.

14.1. Разновидности технологий обмена данными

Многозадачная операционная система Windows поддерживает одновременную работу нескольких приложений. В связи с этим, довольно часто возникает необходимость в обмене данными между приложениями.

Существует несколько технологий по обмену информацией между программами, которые поддерживает язык программирования Visual Basic:

Clipboard (Буфер обмена),

OLE (Связь и внедрение объектов),

DDE (Динамический обмен данными).

Самой простой и в то же время универсальной возможностью по обмену данными является использование буфера обмена Windows. Каждому пользователю операционной системы Windows знакомы команды копирования и вставки из буфера обмена, которые могут применяться как внутри одного приложения, так и для обмена информацией между разными приложениями.

Технология OLE – Object Linking and Embedding (Связь и внедрение объектов) позволяет вставлять и редактировать данные с помощью других приложений, что реализовано с помощью элемента управления OLE (Связь и внедрение объектов), описанного в соответствующей главе.

Наиболее мощным и гибким инструментом, обеспечивающим обмен данными между приложениями, служит технология DDE – Dynamic Data Exchange (Динамический обмен данными).

14.2. Clipboard (Буфер обмена)

Буфер обмена Windows является временным хранилищем данных, которое может использоваться всеми приложениями. Указанные особенности буфера обмена позволяют использовать его для передачи информации между приложениями, которая может быть различном формате:

• простой текст,

• форматированный текст,

• ссылка на один или несколько файлов,

• точечный рисунок (Bitmap),

• векторный рисунок (Metafile),

• цветовая палитра,

• другие данные.

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

Visual Basic обеспечивает доступ к буферу обмена Windows с помощью глобального объекта Clipboard (Буфер обмена). Этот объект не обладает свойствами, не генерирует никакие события, однако поддерживает использование набора специальных методов, позволяющих работать с буфером обмена.

14.2.1. Методы

Clear (Очистить). Полностью очищает содержимое буфера обмена:


Clipboard.Clear


GetData (Прочитать данные). Возвращает рисунок из буфера обмена, работает как функция:


Clipboard.GetData ([ФорматДанных])


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



GetFormat (Прочитать формат). Проверяет буфер обмена на присутствие данных указанного формата и в случае нахождения соответствия возвращает значение True (Истина):


Clipboard.GetFormat (ФорматДанных)


Аргумент ФорматДанных должен иметь одно из перечисленных допустимых значений:

• 1 или vbCFText – простой текст (*.TXT),

• 2 или vbCFBitmap – точечный рисунок (*.BMP),

• 3 или vbCFMetafile – векторный рисунок (*.WMF),

• 8 или vbCFDIB – аппаратно-независимый точечный рисунок (*.DIB),

• 9 или vbCFPalette – цветовая палитра,

• 14 или vbCFEMetafile – расширенный векторный рисунок (*.EMF),

• 15 или vbCFFiles – список файлов,

• —16639 или vbCFRTF – форматированный текст (*.RTF),

• —16640 или vbCFLink – информация об обмене данными DDE,

GetText (Прочитать текст). Возвращает хранящийся текст из буфера обмена:


Clipboard.GetText ([ФорматДанных])


SetData (Записать данные). Сохраняет рисунок в буфере обмена:


Clipboard.SetData Рисунок, [ФорматДанных]


SetText (Записать текст). Сохраняет текст в буфере обмена:


Clipboard.SetText Текст, [ФорматДанных]


Необходимость в использовании того или иного метода объекта Clipboard (Буфер обмена) зависит от используемого формата данных (Рис.14.1).


Рис.14.1. Допустимые форматы данных

методов объекта Clipboard (Буфер обмена)

14.2.2. Пример программирования

Сначала проиллюстрируем запись в буфер обмена и чтение из него текстовых данных, для чего создадим процедуры общего назначения CopyText1ToClipboard, CutText1ToClipboard и PasteText1FromClipboard, работающие с выделенным фрагментом текстового поля Text1.

Команда Copy (Копировать):


Sub CopyText1ToClipboard ()

Clipboard.SetText Text1.SelText

End Sub


Команда Cut (Вырезать):


Sub CutText1ToClipboard ()

Clipboard.SetText Text1.SelText

Text1.SelText =»»

End Sub


Команда Paste (Вставить):


Sub PasteText1FromClipboard ()

Text1.SelText = Clipboard.GetText

End Sub


Возможно, что вы захотите универсализировать эти процедуры общего назначения, чтобы они работали не только с текстовым полем Text1, но и любыми другими выделенными элементами управления.

Для этого можно использовать свойство формы ActiveControl (Активный элемент управления), указывающее на тот элемент управления, который в настоящий момент имеет фокус ввода.



Кроме того, для исключения ошибок выполнения программы, желательно добавить проверку на тип элемента управления с помощью выражения, содержащего ключевое слово TypeOf. Выражение имеет следующий синтаксис:


TypeOf имяОбъекта Is типОбъекта


Аргумент имяОбъекта может быть любой ссылкой на объект, а типОбъекта представлять допустимый тип объекта. При совпадении типов выражение получает значение True (Истина), в противном случае выражение имеет значение False (Ложь).

С учетом этих нововведений процедуры будут выглядеть следующим образом…

Команда Copy (Копировать):


Sub CopyActiveControlToClipboard ()

If TypeOf ActiveControl Is TextBox Then

Clipboard.SetText ActiveControl.SelText

End If

End Sub


Команда Cut (Вырезать):


Sub CutActiveControlToClipboard ()

If TypeOf ActiveControl Is TextBox Then

Clipboard.SetText ActiveControl.SelText

ActiveControl.SelText =»»

End If

End Sub


Команда Paste (Вставить):


Sub PasteActiveControlFromClipboard ()

If TypeOf ActiveControl Is TextBox Then

ActiveControl.SelText = Clipboard.GetText

End If

End Sub


Копирование и вставка графических изображений, также, не представляет ничего сложного. Теперь покажем, как написать процедуры CopyImage1ToClipboard, CutImage1ToClipboard и PasteImage1FromClipboard, связанные с элементом управления Image1

Команда Copy (Копировать):


Sub CopyImage1ToClipboard ()

Clipboard.SetData Image1.Picture

End Sub


Команда Cut (Вырезать):


Sub CutImage1ToClipboard ()

Clipboard.SetData Image1.Picture

Dim EmptyPicture As Data

Image1.Picture = EmptyPicture

End Sub


Команда Paste (Вставить):


Sub PasteImage1FromClipboard ()

Image1.Picture = Clipboard.GetData

End Sub


Здесь мы не стали использовать свойство формы ActiveControl (Активный элемент управления), так как элемент управления Image (Изображение) не может иметь фокуса ввода.

14.3. DDE (Динамический обмен данными)

Технология DDE (Динамический обмен данными) предусматривает создание устойчивой связи между приложениями, а не статического переноса данных, какой производится при использовании объекта Clipboard (Буфер обмена).

При этом данные, отображаемые в приложении-приемнике, автоматически обновляются при их изменении в приложении-источнике.

При организации DDE-связей приложения Visual Basic могут выступать как в качестве источника, так и приемника. Однако, нас будет больше интересовать программирование приложения-приемника, так как именно оно инициирует DDE-связь и получает запрошенные данные.

Большинство элементов управления поддерживают технологию DDE (Динамический обмен данными). Все они имеют специфические свойства, события и методы, необходимые для обслуживания DDE-связи.

14.3.1. Свойства

Чтобы элементу управления организовать DDE-связь от приложения-приемника к приложению-источнику, достаточно установить в режиме проектирования следующие свойства элемента управления:

LinkMode (Режим связи). Позволяет выбрать тип связи для обмена данными DDE. Перечислим возможные значения:

• 0 или None (Нет) – связь отсутствует,

• 1 или Automatic (Автоматический) – автоматическое изменение данных приемника при изменении данных источника,

• 2 или Manual (Ручной) – данные приемника изменяются только при вызове метода LinkRequest (Запрос связи),

• 3 или Notify (Оповещение) – при изменении данных источника генерируется событие LinkNotify (Оповещение связи), но в приемнике данные изменяются только при вызове метода LinkRequest (Запрос связи).

LinkTopic (Объект связи). Содержит название приложения-источника и объекта связи, представляющего собой файл данных, которые разделены вертикальной чертой:


Приложение|Объект


LinkItem (Элемент связи). Представляет собой конкретный элемент данных внутри вышеуказанного объекта связи.

LinkTimeout (Задержка связи). Промежуток времени в десятых долях секунды, требуемый на ожидание ответа от приложения-источника данных DDE.


14.3.2. События

LinkClose (Закрытие связи). Возникает при завершении сеанса DDE.

LinkError (Ошибка связи). Генерируется при возникновении ошибки связи в ходе обмена данными. Рекомендуется использовать это событие, чтобы ваше приложение могло делать повторные запросы к данным, вместо аварийного завершения работы.

LinkNotify (Оповещение связи). Вызывается при изменении данных в приложении-источнике, если свойство LinkMode (Режим связи) имеет значение 3 или Notify (Оповещение).

LinkOpen (Открытие связи). Возникает при открытии сеанса DDE.

14.3.3. Методы

LinkExecute (Выполнить команду связи). Посылает командную строку приложению-источнику данных DDE – Dynamic Data Exchange (Динамический обмен данными):


объект.LinkExecute командная_строка


LinkPoke (Возвратить по связи). Передает содержимое объекта приложению-источнику данных DDE.


объект.LinkPoke


LinkRequest (Запросить связь). Запрашивает приложение-источник данных DDE обновить содержимое объекта.


объект.LinkRequest


LinkSend (Отправить по связи). Передает содержимое объекта приложению-приемнику данных DDE.


объект.LinkSend

14.3.4. Пример программирования

Для того, чтобы инициировать DDE-связь во время работы приложения, следует выполнить ряд действий:

• установить свойству LinkMode (Режим связи) значение 0 или None (Нет),

• задать с помощью свойства LinkTopic (Объект связи) приложение-источник и имя файла данных,

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

• создать связь, установив соответствующее значение свойства LinkMode (Режим связи).

Например, для создания DDE-связи между текстовым полем Text1 и всем содержимым документа Document1.doc, созданного с помощью приложения Microsoft Word, нужно выполнить вышеуказанные действия:

Text1.LinkMode = 0 ‘ нет связи

Text1.LinkTopic = «Winword|Document1.doc» ‘ приложение и документ

Text1.LinkItem = «doc» ‘ связываем весь документ

Text1.LinkMode = 1 ‘ автоматическая связь


Глава 15. Ввод и вывод информации

В этой главе вы научитесь:

• систематизировать свои знания по вводу-выводу информации,

• получать данные, необходимые для работы приложения,

• выводить из приложения полученные результаты.

15.1. Возможности по вводу и выводу информации

Visual Basic предоставляет программисту широчайшие возможности по обмену данными между приложением и внешним миром. Большинство из этих возможностей уже были рассмотрены в предыдущих главах, а здесь мы произведем попытку их систематизации и упомянем то, что было упущено ранее.

Итак, для ввода информации используются:

• элементы управления,

• встроенные функции,

• дисковые файлы,

• системный реестр,

• буфер обмена Windows,

• приложения-источники данных OLE и DDE.

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

Вывод информации осуществляется почти аналогичным образом:

• элементы управления,

• встроенные процедуры,

• принтеры,

• дисковые файлы,

• системный реестр,

• буфер обмена Windows,

• приложения-приемники данных OLE и DDE.

Как мы видим, для вывода данных дополнительно могут использоваться принтеры, представляющие собой внешние устройства компьютера, создающие бумажные копии текстовой или графической информации. Кроме того, вывод информации может осуществляться не только через содержимое элементов управления, но и при помощи специальных методов, например, Print (Напечатать).

15.2. Встроенные процедуры и функции

Для получения текстовой или цифровой информации от пользователя без использования элементов управления применяется встроенная функция InputBox (Окно ввода). При вызове этой функции появляется диалоговое окно, запрашивающее требуемые данные (Рис.15.1).


Рис.15.1. Диалоговое окно InputBox (Окно ввода)


Функция InputBox (Окно ввода) обладает следующим синтаксисом:


InputBox (сообщение [, заголовок] [, по умолчанию] [, положение по X] [, положение по Y] [, файл справки, контекст справки])


Единственный обязательный аргумент сообщение представляет собой строку текста, отображаемую в диалоговом окне. Строковое значение может содержать нескольких физических строк, для разделения которых допускается использование символа возврата каретки Chr (13), перевода строки Chr (10) или комбинацию этих символов Chr (13) & Chr (10).

Аргумент заголовок определяет строку заголовка диалогового окна InputBox (Окно ввода). Если данный аргумент опущен, в строку заголовка помещается имя приложения.

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

Положение по X и положение по Y задают расстояние в твипах между левой и верхней границами диалогового окна и краями экрана соответственно. Если этот аргумент опущен, диалоговое окно помещается примерно по центру экрана.

Аргументы файл справки и контекст справки помогут определить раздел справочной системы, который будет открываться при нажатии клавиши [F1].

Процедура MsgBox (Окно сообщения) выводит на экран диалоговое окно, содержащее сообщение, а затем устанавливает режим ожидания нажатия кнопки пользователем (Рис.15.2).


Рис.15.2. Диалоговое окно MsgBox (Окно сообщения)


Синтаксис использования процедуры MsgBox (Окно сообщения):


MsgBox сообщение [, кнопки] [, заголовок] [, файл справки, контекст справки]


Аргументы сообщение, заголовок, файл справки и контекст справки используются точно так же, как и в функции InputBox (Окно ввода).

Новый числовой параметр кнопки представляет собой сумму значений, которая определяет количество и тип используемых кнопок, позволяет выбрать отображаемый значок, а также установить другие параметры окна сообщения. Значения параметра кнопки разбито на несколько категорий. При арифметическом суммировании можно использовать не более одного значения из каждой группы, либо следует применять логический оператор Or (Или).

Категория Button (Кнопка):

• 0 или vbOKOnly – отображается только кнопка OK,

• 1 или vbOKCancel – отображаются кнопки OK и Отмена (Cancel),

• 2 или vbAbortRetryIgnore – отображаются кнопки Прервать (Abort), Повторить (Retry) и Пропустить (Ignore),

• 3 или vbYesNoCancel – отображаются кнопки Да (Yes), Нет (No) и Отмена (Cancel),

• 4 или vbYesNo – отображаются кнопки Да (Yes) и Нет (No),

• 5 или vbRetryCancel – отображаются кнопки Повторить (Retry) и Отмена (Cancel).

Категория Icon (Значок):

• 16 или vbCritical – используется значок «Критическое сообщение»,

• 32 или vbQuestion – используется значок «Предупреждающий запрос»,

• 48 или vbExclamation – используется значок «Предупреждение»,

• 64 или vbInformation – используется значок «Информационное сообщение».

Категория Default (По умолчанию):

• 0 или vbDefaultButton1 – основной является первая кнопка,

• 256 или vbDefaultButton2 – основной является вторая кнопка,

• 512 или vbDefaultButton3 – основной является третья кнопка,

• 768 или vbDefaultButton4 – основной является четвертая кнопка.

Категория Modal (Модальность):

• 0 или vbApplicationModal – модальное окно на уровне приложения: чтобы продолжить работу с текущим приложением, необходимо ответить на данное сообщение,

• 4096 или vbSystemModal – модальное окно на уровне системы: все приложения будут недоступны до тех пор, пока пользователь не ответит на данное сообщение,

Категория Extras (Дополнительные параметры):

• 16384 или vbMsgBoxHelpButton – добавляется кнопка Справка (Help),

• 65536 или vbMsgBoxSetForeground – диалоговое окно отображается в фоновом режиме,

• 524288 или vbMsgBoxRight – текст сообщения выравнивается по правому краю диалогового окна,

• 1048576 или vbMsgBoxRtlReading – текст отображается справа налево, что актуально при использовании соответствующих языков (арабский, иврит и др.).

Если при вызове процедуры не указывать аргумент кнопки, ему по умолчанию присваивается нулевое значение, что является комбинацией vbOKOnly + vbDefaultButton1 + vbApplicationModal (отображается только кнопка OK, она же является основной, а окно сообщения будет модальным только на уровне приложения).

MsgBox (Окно сообщения) может работать и как функция, возвращающая числовое значение, которое указывает на то, какая кнопка была нажата:

• 1 или vbOK – кнопка OK,

• 2 или vbCancel – кнопка Отмена (Cancel),

• 3 или vbAbort – кнопка Прервать (Abort),

• 4 или vbRetry– кнопка Повторить (Retry),

• 5 или vbIgnore – кнопка Пропустить (Ignore),

• 6 или vbYes – кнопка Да (Yes),

• 7 или vbNo – кнопка Нет (No).



Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Следующая
  • 0 Оценок: 0

Правообладателям!

Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.


Популярные книги за неделю


Рекомендации