Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример отчета по практике.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
248.83 Кб
Скачать

2.4 Реалізація функцій програми

Формування рядка прикладу коду

Формування рядка прикладу коду виконується у процедурі ФормированиеКода, яка викликається при зміні значення будь-якого параметра функції.

' процедура формування рядка прикладу коду

Private Sub ФормированиеКода()

Dim S As String ' рядок прикладу коду

Dim DK As String ' символ подвійних лапок

Dim N As Byte ' номер обраної радіокнопки в групі

DK = Chr(34) ' ініціалізація символу подвійних лапок

S = "DimU" & txtVarible & "UAsUvbMsgBoxResult" & vbCrLf

' формує рядок оголошення перемінної,що складає зі службового

слова Dim, імені перемінної, службового слова As,

' типу перемінної і символів кінця рядка

S = S & txtVarible & "U=UMsgBox(" & DK & txtPromt & DK & ",U"

' додає в рядок коду ім'я перемінної, знак рівності, ім'я функції,

' дужку, що відкривається, текст повідомлення

в подвійних лапках і кому

N = lblCommand

' обчислює номер обраної радіокнопки в групі "Набір кнопок"

S = S & optCommand ( N ).Caption

' додає в рядок коду ім'я константи,

що відповідає обраному набору кнопок

N = Val ( lblPicture ) / 16

' обчислює номер обраної радiокнопки в групі "Пиктограмма"

If N Then S = S & "U+U" & optPicture(N).Caption

' якщо номер не дорівнює нулю, то додає в рядок коду знак плюс і

ім'я константи, що відповідає обраній піктограмі

N = Val ( lblFocus ) / 256

обчислює номер обраної радіокнопки в групі "Положение фокуса"

If N Then S = S & " + " & optFocus ( N ).Caption

' якщо номер не дорівнює нулю, то додає в рядок коду знак плюс і

ім'я константи, що відповідає обраній кнопці з фокусом

N = Val ( lblModal ) / 4096

' обчислює номер обраної радіокнопки в групі "Модальність вікна"

If N Then S = S & "U+U" & optModal ( N ).Caption

' якщо номер не дорівнює нулю, то додає в рядок коду знак плюс і

ім'я константи, що відповідає обраному виду модальності

S = S & ",U" & DK & txtTitle & DK & ")" & vbCrLf

' додає в рядок коду кому, текст заголовка вікна повідомлення в

' подвійних лапках, дужку, що закривається, і символи кінця рядка

txtCode = S

' передає ідентифікатору функції значення перемінної S

End Sub

Процедура ФормированиеКода викликається при зміні значення будь-якого параметра функції.

' процедура обробки події зміни значення полю txtPromt

Private Sub txtPromt_Change()

ФормированиеКода ' виклик процедури формування коду

End Sub

' процедура обробки події зміни значення напису lblButtons

під час виконання програми

Private Sub lblButtons_Click()

ФормированиеКода ' виклик процедури формування коду

End Sub

' процедура обробки події зміни значення полю txtTitle

Private Sub txtTitle_Change()

ФормированиеКода ' виклик процедури формування коду

End Sub

Визначення імені перемінної

На відміну від параметрів promt та title, які можуть прийнять будь-які значення, ім’я перемінної повинно відповідати наступним правилам:

довжина імені перемінної не повинна перевищувати 255 символів;

ім'я перемінної повинне починатися тільки з букви (але не з цифри та спеціального символу!);

в імені перемінної можна використовувати будь-які букви (у тому числі і кирилицю), цифри і символ підкреслення “_”. Не можна використовувати пробіли і розділові знаки;

ім'я перемінної не повинне збігатися зі службовим словом.

Обмежити довжину імені перемінної можна за допомогою властивості MaxLength текстового поля txtVarible.

Для того, щоб виконати друге і третє правило, об’явимо функцію, яка буде вилучати з рядка всі заборонені символи.

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

' використання яких заборонено в імені перемінної; якщо з рядка

' вилучені всі символи, повертає значення параметра Default

Private Function Имя (S As String, Default As String) As String

' рядок дозволених символів

Const R = "qwertyuiopasdfghjklzxcvbnm0123456789” & U_

“_йцукенгшщзхъфывапролджэячсмитьбюеї"

Dim C As String ' поточний символ

Dim і As Long ' номер поточного символу

Dim V As String ' рядок з ім'ям перемінної

' вилучення заборонених символів

V = "" ' ініціалізація перемінної порожнім рядком

For і = 1 To Len (S) ' для всіх символів рядка S

C = Mid$(S, і, 1) ' читає i-ий символ рядка S

If InStr(1, R, C, vbTextCompare) Then

' якщо символ C є присутнім у рядку (без обліку регістра)

V = V & C ' додає символ C у кінець рядка V

Else

Beep ‘ звуковий сигнал

End If

Next i

' вилучення першої цифри

While IsNumeric ( Mid$ (V , 1 , 1))

' доти, поки перший символ рядка V – цифра

V = Mid$ (V , 2 , Len (V) - 1)

' читає всі символи рядка V з другого до останнього

Beep ‘ звуковий сигнал

Wend

' заміняє порожній рядок на ім'я перемінної за замовчуванням

If Len (V) = 0 Then ' якщо з рядка V вилучені всі символи

V = Default ' передає значення параметра Default

End If

Имя = V

' передає ідентифікатору функції значення перемінної V

End Function

Функція Имя викликається у процедурі обробки події зміни значення поля txtVarible і приводить до того, що коли користувач натискує заборонену клавішу, символ не вводиться у поле, а подається звуковий сигнал.

Коли користувач вилучає всі символи з текстового поля txtVarible, то у це поле буде введений рядок із властивості Tag. Тому властивість Tag текстового поля txtVarible має у програмі значення nResult.

Private Sub txtVarible_Change()

txtVarible = Имя ( txtVarible , txtVarible.Tag )

ФормированиеКода 'виклик процедури формування коду

End Sub

Для того щоб виконати четверте правило оголосимо функцію, яка буде повертати значення True тоді, колі її параметр збігається з одним із службових слів. Рядкова константа W, що визначена як локальна у тілі функції, містить у собі список службових слів, розділених комами.

повертає True, якщо аргумент збігається зі службовим словом

Private Function СлужебноеСлово ( S As String ) As Boolean

'рядок службових слів

Const W As String = "On,Error,GoTo,Resume,Stop,True,False," &U_

"And,Or,Xor,Not,Eqv,Imp,Option,Explicit,Private,Public,Dim," &U_

"ReDim,Preserve,Const,Static,Sub,Function,ByVal,ByRef,As," & _

"Byte,Integer,Long,Currency,Single,Double,Boolean,String," & _

"Date,Variant,Object,Property,If,Then,Else,ElseIf,End,While," & _

"Wend,Do,Loop,Until,Exit,For,To,Step,Next,Select,Case"

' якщо параметр S входить у рядок W

без урахування регістру, то передає True

СлужебноеСлово = InStr (1 , W , S , vbTextCompare )

End Function

Функцію СлужебноеСлово доцільно викликати тільки тоді, коли користувач закінчив уведення імені перемінної, наприклад, у функції перевірки уведених даних:

Private Sub txtVarible_Validate ( Cancel As Boolean )

Dim V As String ' значення текстового поля txtVarible

V = StrConv ( txtVarible , vbProperCase )

' перетворює перший символ у верхній регістр, інші в нижній

If Служебноеслово (V) Then ' якщо рядок є службовим словом

MsgBox "Имя переменной не должно совпадать" & vbCrLf &U_

"со служебным словомU" & V & "U!" , vbExclamation , "Ошибка"

виводить на екран повідомлення про помилку

txtVarible = txtVarible.Tag

' передає текстовому полю значення за замовчуванням

End If

End Sub

Демонстрація роботи функції

Після того, як користувач вибрав всі параметри функції, він має можливість натиснути кнопку Показать (cmdShow) і вивести на екран вікно повідомлень з визначеними параметрами.

' процедура обробки події щиглика на кнопці cmdShow

Private Sub cmdShow_Click()

Dim nResult As VbMsgBoxResult ' код натиснутої кнопки

nResult = MsgBox ( txtPromt , lblButtons , txtTitle )

' виводить на екран вікно повідомлень з обраними користувачем

значеннями параметрів і передає перемінній nResult код кнопки,

натиснутої користувачем

frmAnser.Show

' відображає на екрані форму, що містить відповідь користувача

frmAnser.cboCommand.ListIndex = nResult - 1

' вибирає в полі зі списком cboCommand рядок з назвою кнопки

frmAnser.cboConst.ListIndex = nResult - 1

' вибирає в полі зі списком cboConst рядок

з назвою відповідної константи

End Sub

Приведений фрагмент коду також виводить на екран діалогове вікно frmAnser, яке відображає відповідь користувача у двох комбінованих списках cboCommand та cboConst, які містять перелік назв кнопок та відповідних їм констант.

Копіювання прикладу коду

Після того, як користувач визначив усі параметри функції, він має можливість натиснути кнопку Копировать і скопіювати приклад коду в буфер обміну, а далі з буфера обміну у свою програму.

' процедура обробки події щиглика на кнопці cmdCopy

Private Sub cmdCopy_Click()

Clipboard.Clear ' очищення буфера обміну

Clipboard.SetText txtCode.Text

' копіювання в буфер обміну значення текстового поля txtCode

End Sub

Завершення програми

Завершити роботу з програмою можна за допомогою кнопки Закрыть, натискування на яку виводить на екран запит про завершення роботи:

' процедура обробки події щиглика на кнопці cmdClose (Закрыть)

Private Sub cmdClose_Click()

If vbYes = MsgBox ("Вы действительно хотите завершить” &U_

“работу ?" , vbYesNo + vbQuestion, "Завершение работы") &U_

Then End

' запит про завершення роботи

End Sub