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

2.3 Інтерфейс програми

Створення програми складалося з двох важливих частин; опишемо кожну окремо.

Загальний вигляд програми показаний на рисунку 2.1. Всі елементи управління розташовані на одному наборі вкладок (tabT), яка має чотири вкладки.

Рис. 2.1. Вікно програми

Вікно програми відображується в центрі екрана, користувач може згорнути його на панель задач. Користувач не має можливості змінити розмір вікна та розгорнути його на весь екран. Для цього були визначені наступні властивості:

BoderStyle = 1 – Fixed Single;

StartUpPosition = 2 – Center Screen;

MaxButton = False;

ShowInTaskBar = True.

Набір вкладок не є контейнером, тому для його функціонування було створено масив із чотирьох груп (Frame), яки мають ім’я fra з індексами від 1 до 4.

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

'процедура обробки події завантаження форми

Private Sub Form_Load()

Dim і As Byte ‘ індекс групи

For і = 1 To 4 ' для всіх груп з індексами від 1 до 4

fra(і).Left=tabT.ClientLeft+(tabT.ClientWidth-fra(і).Width)/2

fra(і).Top=tabT.ClientTop+(tabT.ClientHeight-fra(і).Height)/2

' вирівнювання групи по центру набору вкладок

Next i

Me.Height = tabT.Height + 850

Me.Width = tabT.Width + 150

визначення розміру форми в залежності від розміру набору вкладок

End Sub

Набір вкладок може тільки змінювати свій зовнішній вигляд, коли користувач натискує на ньому кнопкою миші. Для того, щоб відображати на екрані групу, відповідну відкритій користувачем вкладці необхідно під час події натискування кнопки миші на наборі вкладок змінити значення властивості Visible усіх груп так, як показано нижче:

Private Sub tabT_Click ()

Dim i As Byte ' індекс групи

Dim V As Byte ' номер обраної вкладки

V = tabT.SelectedItem.Index

визначення номера обраної вкладки

For i = 1 To 4 ' для всіх груп с індексами від 1 до 4

fra(i).Visible = (i = V) ' якщо індекс групи дорівнює

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

' в формі, інакше - ховається

Next i

End Sub

Вкладка “Синтаксис”

Вкладка “Синтаксис” відображає формальний синтаксис функції та опис її параметрів. Опис параметрів функції має значний обсяг, тому доцільно відображати у формі тільки опис того параметра, який вибрав користувач.

Необхідно відзначити, що у наведеній програмі широко використовується властивість елемента керування Tag (target), яка може містити будь-яку додаткову інформацію, наприклад, опис параметра або константи.

Для розв’язання цієї задачі доцільно:

створити масив кнопок cmdPar з індексами від 0 до 4, на яких відображається назва параметра ;

задати значення властивості Tag рівному рядку опису відповідного параметра;

створити загальну для масиву кнопок процедуру обробки події натискування на кнопку, яка передає у написи lblPar і lblParDescription значення властивостей поточної кнопки Caption і Tag відповідно.

Рис. 2.2 Об’єкти на вкладці “Синтаксис”

процедура обробки події щиглика на масиві кнопок cmdPar

Private Sub cmdPar_Click ( Index As Integer )

lblPar = cmdPar ( Index ).Caption ' передає значення

властивості Caption поточної кнопки cmdPar у напис lblPar

lblParDescription = cmdPar ( Index ).Tag

' передає значення властивості Tag поточної кнопки cmdPar

у напис lblVarDescription

End Sub

Вкладка “Стиль”

Вкладка “Стиль” відображає чотири групи, що містять у собі чотири масиви радіокнопок, які дозволяють користувачу вибрати стиль вікна повідомлень: піктограму, набір кнопок, положення фокуса та вид модальності. Крім того, користувач має можливість переглянути значення вибраної константи у написах lblPicture, lblCommand, lblFocus, lblModal, та її опис у напису lblDiscription .

Рис. 2.3. Вкладка “Синтаксис”

Вибір піктограми

Для того, щоб користувач мав можливість вибрати піктограму у вікні повідомлень, доцільно:

створити масив радіокнопок optPicture, на яких відображається назва відповідної константи та розташувати його в однієї групі;

визначити значення індексів масиву радіокнопок від 0 до 4;

розташувати константи у порядку зростання їх значень;

коло кожної радіокнопки розташувати відповідну піктограму в елементі управління типа Image;

створити напис lblPicture, що відображає значення вибраної користувачем константи;

задати значення властивості Tag рівному рядку опису відповідної константи;

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

передає у напис lblPicture значення відповідної константи;

у напис lblDescription – значення властивості Caption поточної радіокнопки;

підраховує суму констант.

Необхідно відзначити, що завдяки розташуванню констант у порядку зростання їх значення, відношення значення константи до індексу відповідної радіокнопки дорівнює 16. Цей факт значно полегшує задачу відображення значення константи.

' функція повертає суму констант, обраних у всіх групах

Private Function SumButtons ( ) As Integer

SumButtons = Val ( lblPicture ) + Val ( lblCommand )U_

+ Val ( lblFocus ) + Val ( lblModal )

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

' передає ідентифікатору функції їхню суму

End Function

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

на масиві радіокнопок у групі "Пиктограмма"

Private Sub optPicture_Click ( Index As Integer )

lblPicture = Index * 16 ' обчислює значення відповідної

константи і передає його у напис lblPicture

lblDiscription = optPicture (Index).Tag ' передає в напис

' lblPicture значення властивості Tag поточної радіокнопки

lblButtons = SumButtons ' обчислює суму обраних констант

End Sub

Розташування кнопки у фокусі

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

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

у групі "Положение фокуса"

Private Sub optFocus_Click ( Index As Integer )

lblFocus = Index * 256 ' обчислює значення

відповідної константи і передає його у напис lblFocus

lblDiscription = optFocus (Index).Tag ' передає в напис

lblPicture значення властивості Tag поточної радіокнопки

lblButtons = SumButtons ' обчислює суму обраних констант

End Sub

Визначення модальності вікна повідомлення

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

у групі "Модальность окна"

Private Sub optModal_Click ( Index As Integer )

lblModal = Index * 4096 ' обчислює значення відповідної

константи і передає його у напис lblFocus

lblDiscription = optModal ( Index ).Tag ' передає y напис

lblPicture значення властивості Tag поточної радіокнопки

lblButtons = SumButtons ' обчислює суму обраних констант

End Sub

Відображення кнопок

Коли користувач вибирає набір кнопок та положення фокуса, то ці опції можуть мати суперечливі значення. Наприклад, коли вибраний набір кнопок vbYesNo, то вибір опції vbDefaultButton3 (третя кнопка у фокусі) не має сенсу. У цьому випадку перша кнопка буде мати фокус.

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

Для реалізації цих функцій у властивості Tag кожної радіокнопки у першому символі визначено кількість кнопок у відповідному наборі. Наприклад, елемент управління optCommand (4) має наступні значення властивостей:

Caption = vbYesNo

Tag = “2С помощью кнопок Да Нет пользователю предлагается

выбрать один из двух вариантов ответов”

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

радіокнопок у групі "Набор кнопок"

Private Sub optCommand_Click ( Index As Integer )

Dim S As String ' значення властивості Tag поточної кнопки

Dim N As Byte ' кількість кнопок, відображених у вікні

Dim і As Integer ' індекс кнопки в групі "Положение фокуса"

S = optCommand (Index).Tag ' читає значення

‘ властивості Tag поточної радіокнопки

N = Val (S) ' перетворює початок рядка S

‘ на число і передає його у перемінну N

' блокування кнопок у групі "Положение фокуса",

що відсутні у вікні повідомлення

For і = 2 To 1 Step –1 ' для радіокнопок у групі "Положение

‘ фокуса" з індексами від 2 до 1

If і > N - 1 Then ' якщо номер кнопки, що має фокус у

‘ вікні повідомлень, більше кількості

‘ кнопок в обраному наборі кнопок

optFocus (і).Enabled = False

' скасовує доступ до кнопки

If optFocus (і).Value Then ' якщо кнопка обрана

optFocus (і - 1).Value = True

' переносить вибір на попередню радіокнопку

End If

Else

оptFocus (і).Enabled = True ' встановлює доступ до кнопки

End If

Next i

lblCommand = Index ' обчислює значення відповідної

константи і передає його у напис lblCommand

lblDiscription = Mid$ ( S , 2 , Len(S) - 1) ' читає всі символи

рядка S від другого до останнього і передає їх у напис lblPicture

lblButtons = SumButtons ' обчислює суму обраних констант

End Sub

Вкладка “Пример кода”

Вкладка “Пример кода” дозволяє користувачу переглянути значення параметра buttons у напису lblButtons, що визначає стиль вікна повідомлень, та встановити значення параметрів promt та title у текстових полях txtPromt та txtTitle, які визначають текст повідомлення та заголовок вікна відповідно.

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

Приклад коду відображається у текстовому полі txtCode. Для цього елемента управління вибраний сірий колір для властивості BackColor. Крім того, текстове поле txtCode заблоковане (Lock = True), що не дозволяє користувачу явно змінити його значення. Текст прикладу коду змінюється, коли користувач змінює значення будь-якого параметра.

Рис. 4. Вкладка “Пример кода”