Функцията MsgBox()

Функцията MsgBox()

Posted by dbalinov on Пет., 12/19/2008 - 16:23

1. Същност

Функцията MsgBox() изобразява диалогов прозорец в който се изписва дадено
съобщение, изчаква потребителят да натисне даден бутон и се връща цяло число,
показващо какъв бутон точно е натиснат.

2. Синтаксис

MsgBox(съобщение [, тип на прозореца [, заглавие на прозореца]])

  • съобщението представлява текста, който ще се изпише в диалоговия прозорец.
  • тип на прозореца - Това поле е незадължително. Цифров израз, който представлява
    сумата от стойностите означаващи номера и типа на бутоните, които ще се изобразят,
    стилът на иконата, която ще се използва и номерът на бутона по подразбиране, както
    и на текстовото поле. Ако пропуснете бутоните, стойността по подразбиране е нула.

    Типът може да се запише и по следния начин:

    MsgBoxStyle.Свойство1 [Or MsgBoxStyle.Свойство2]

  • Заглавие на прозореца – Това поле също не е задължително. Тук се изписва името,
    което ще се изпише в заглавната лента (titlebar) на диалоговия прозорец. Ако не се зададе
    стойност, в заглавната лента ще се изпише заглавието на основния формуляр.

Тип на прозореца – MsgBoxStyle – стойности на номерациите са дадени в списъка
по-долу в следната таблица:

Име Ст-ст Описание Изображение
OKOnly 0 OK-бутон
OKCancel 1 OK и Cancel бутони
AbortRetryIgnore 2 Abort, Retry и Ignore бутони
YesNoCancel 3 Yes, No и Cancel бутони
YesNo 4 Yes и No бутони
RetryCancel 5 Retry и Cancel бутони
Critical 16 Critical Message икона
Question 32 Warning Query икона
Exclamation 48 Warning Message икона
Information 64 Information Message икона
DefaultButton1 0 Първият бутон е по подразбиране
DefaultButton2 256 Вторият бутон е по подразбиране
DefaultButton3 512 Третият бутон е по подразбиране
ApplicationModal 0 Приложението е модално. Потребителя трябва да отговори на текстовото поле
преди да продължи работата с текущото приложение.
SystemModal 4096 Системата е модална. Всички приложения са в очакване на потребителски отговор.
MsgBoxSetForeground 65536 Настройва текстовото поле като прозорец на преден план.
MsgBoxRight 524288 Текстът е подравнен отдясно
MsgBoxRtlReading 1048576 Въведеният текст трябва да излиза от дясно на ляво, по арабската система.

Първата група от стойности (0–5) описват номера и типа на бутоните, които ще се
изобразяват в диалоговия прозорец; Втората група (16, 32, 48, 64) описват стила на
иконата; третата група (0, 256, 512) определя кой бутон е по подразбиране; четвъртата
група (0, 4096) определят модалността на текстотовото съобщение и последната, пета
група определя дали диалоговият прозорец да бъде на преден план или не както и
подравняването и посоката на текста. Когато събирате финалната стойност за бутоните,
използвайте едно число от всяка група.

3. Върнати стойности

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

Бутон Стойност
OK 1
Cancel 2
Abort 3
Retry 4
Ignore 5
Yes 6
No 7

Тези върнати стойности се използват за обработка на информацията. Например, ако
си представим, че имате следният диалогов прозорец:

Ако натиснете бутона Yes, функцията връща 6, а при натискане на бутон No – 7. Това се използва по следния начин в кода:


Dim result As Integer
result = MsgBox(“Искате ли да започнете теста?”, MsgBoxStyle.Question Or_
MsgBoxStyle.YesNo)
If result = 6 Then ' Ако Потребителят е избрал Yes.
   ' Предприема едно действие.
Else
   ' Предприема друго действие.
End If

4. Пример

Примерът по-долу използва функцията MsgBox() за да изобрази съобщение за
грешка в диалогов прозорец с Yes и No бутони. Бутонът No е избран като бутон по
подразбиране. Това се прави чрез комбиниране на константни MsgBox стойности с
числов израз. В случай, че прибавите 4 (Yes/No бутони за комбинации) и 16 (Critical
Message иконата) и 256 (вторият бутон е по подразбиране) ви дава 276. Стойността
върната от MsgBox функцията зависи от бутонът, който е натиснал потребителя: Yes
връща стойност 6; No връща стойност 7.

Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Искате ли да продължите?" ' Дефинираме съобщение.
style = MsgBoxStyle.DefaultButton2 Or _
   MsgBoxStyle.Critical Or MsgBoxStyle.YesNo
title = "MsgBox Demonstration" ' Дефинираме заглавие.
' Изобразяваме съобщението на екрана.
response = MsgBox(msg, style, title)
If response = MsgBoxResult.Yes Then ' Потребителят избира Yes.
   ' Предприема едно действие.
Else
   ' Предприема друго действие.
End If