Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Створення класу SmartForm






Наступний приклад допоможе вам краще зрозуміти, як проектуються класи. Я використовую клас SmartForm для зберігання і отримання інформації про положення і розмір форм на екрані. Такі форми " запам'ятовують" своє положення і стан між запусками додатка. Коли усе буде готове, ви можете включити цей клас у свою програмну бібліотеку і використовувати його в майбутніх проектах!

1. Створіть новий проект командою File > New Project або поєднанням клавіш Ctrl+N.

2. У діалоговому вікні New Project, що відкрилося, виберіть значок Standard EXE.

3. Включите в проект новий модуль класу - для цього клацніть правою кнопкою миші у вікні проекту і виберіть команду Add > Class Module з контекстного меню.

4. У діалоговому вікні Add Class Module виберіть значок Class Module і натисніть кнопку Open.

5. У вікні властивостей задайте властивості Name створеного класу значення Smart Form.

6. Двічі клацніть на формі Smart Form у вікні проекту, щоб відкрити для неї вікно програми.

7. Вставте наступний фрагмент в секцію(Declarations) модуля класу:

 

Option Explicit

 

'Закриті змінні

Private mForm As Object

Private mLeft As Long

Private mTop As Long

Private mWidth As Long

Private mHeight As Long

Private mWS As Integer

 

Public Event ErrorMessage(Message As String)

 

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

ErrorMessage оголошене відкритим (Public).

8. Додайте в клас нову властивість командою Tools > Add Procedure.

9. Коли на екрані з'явиться діалогове вікно Add Procedure, введіть в поле Name рядок Form.

10. Встановіть перемикач Property і залиште перемикач Scope в положенні Public.

11. Завершіть створення властивості кнопкою ОК. У програмний модуль будуть додана дві процедури подій: Public Property Get Form() і Public Property Let Form(ByVal vNewValue As Variant).

12. У рядку

 

Property Let Form(ByVal vNewValue As Variant)

 

замініть ключове слово Let на Set. Рядок набере наступного вигляду:

 

Property Set Form(ByVal vNewValue As Variant)

 

13. Вставте наступний рядок в процедуру Property Get Form():

 

Form = mForm

 

14. Вставте наступний рядок в процедуру Property Set Form..:

 

Set mForm = vNewValue

Оскільки в наших процедурах параметри мають тип Variant, ми скористаємося засобами пошуку і заміни IDE і замінимо його типом Object.

15. Натисніть Ctrl+H, щоб викликати діалогове вікно пошуку і заміни тексту.

16. Введіть в поле Find What слово Variant.

17. Введіть в поле Replace With слово Object.

18. Якби пошук і заміну вимагалося виконати в усьому застосуванні, ми б встановили перемикач Current Project. Оскільки нас цікавить тільки поточний модуль класу, Встановіть перемикач Current Module.

19. Натисніть кнопку Replace All, щоб замінити в цьому модулі усі типи Variant типами Object. В результаті будуть здійснена дві заміни.

20. Закрийте діалогове вікно кнопкою Cancel.

21. Додайте наступний метод в секцію(Declarations):

 

Private Sub SaveSettings()

Dim mAppName As String

 

' Присвоїти змінній ім'я ЕХЕ-файлу

mAppName = App.EXEName

 

'Інформацію можна зберегти лише при відомому

' імені додатка і імені форми..

With mForm

If.Name < > " " Then

SaveSetting mAppName,.Name, _

" " WindowState", Str$(.WindowState)

If.WindowState = vbNormal Then

SaveSetting mAppName,.Name, _

" " Left", Str$(.Left)

SaveSetting mAppName,.Name, _

" " Top", Str$(.Top)

SaveSetting mAppName,.Name, _

" " Width", Str$(.Width)

SaveSetting mAppName,.Name, _

" " Height", Str$(.Height)

End If

Else

' Ініціювати подію ErrorMessage

RaiseEvent ErrorMessage(" Необхідно задати " _

" " об'єкт форми"!)

End If

End With

End Sub

 

Основна частина роботи виконується за допомогою команди SaveSetting. Ця вбудована команда Visual Basic дозволяє зберегти значення в системному реєстрі, не звертаючись до Windows API.

22. Додайте наступний метод в секцію(Declarations) класу:

 

Private Sub GetSettings()

Dim mAppName As String

 

'Присвоїти змінній ім'я ЕХЕ-файлу

mAppName = App.EXEName

 

With mForm

If.Name < > " " Then

mLeft = Val(GetSetting(mAppName, _

..Name, " Left",.Left))

mTop = Val(GetSetting(mAppName, _

..Name, " Top",.Left))

mWidth = Val(GetSetting(mAppName, _

..Name, " Width",.Left))

mHeight = Val(GetSetting(mAppName, _

..Name, " Height",.Left))

 

'Змінити розмір форми

..WindowState = mWS

..Move mLeft, mTop, mWidth, mHeight

Else

'Ініціювати подію ErrorMessage

RaiseEvent ErrorMessage(" Необхідно задати "

" " об'єкт форми"!)

End If

End With

End Sub

Щоб наш клас дозволяв змінювати розміри форм, в секцію(Declarations) модуля класу слід включити метод Resize:

 

Public Sub ResizeO

' Усе, що від нас потрібно -

' зберегти координати форми

SaveSettings

End Sub

 

23. Вставте наступний фрагменті секцію(Form [Property Set]):

 

Public Property Set Form(ByVal vNewValue As Object)

'Створити посилання на реальний об'єкт форми

Set mForm = vNewValue

 

'Отримати збережені координати

GetSettings

 

'Виконати першу зміну розміру

Resize

End Property

 

24. Залишається лише навчити клас зберігати значення параметрів і знищувати посилання при вивантаженні об'єкту форми. Для цього в процедуру події Class_ Terminate() вставляється наступний фрагмент:

 

Private Sub Class_Terminate()

'Зберегти параметри форми

SaveSettings

 

'Знищити локальне посилання на об'єкт

Set mForm = Nothing

End Sub

25. Ми ввели досить великий об'єм коду - настав час зберегти файл. Натисніть Ctrl+S, і коли на екрані з'явиться діалогове вікно Save As, вкажіть в полі Save In ім'я каталогу своєї програмної бібліотеки (якщо ви створили її).

26. Натисніть кнопку Save, щоб зберегти клас.

Поздоровляю! Ви тільки що створили універсальний модуль класу. Цей модуль можна використовувати в будь-яких проектах, що містять форми, а його підключення до форм вимагає мінімального об'єму коду. Давайте подивимося, як це робиться:

1. Двічі клацніть на формі Form! у вікні проекту, щоб відкрити вікно програми для форми.

2. Вставте наступний рядок в секцію(Declarations) форми:

 

Option Explicit

Private WithEvents sf As SmartForm

 

Як говорилося раніше, ключове слово WithEvents повідомляє Visual Basic про необхідність виведення подій класу у вікні програми. В результаті ви зможете вибрати sf із списку Object, що розкривається, в лівому верхньому кутку вікна програми.

3. Перейдіть до процедури події ЕггоrMessage і вставте в неї наступний рядок:

 

Private Sub sf_ErrorMessage(Message As String)

MsgBox Message

End Sub

 

По команді MsgBox Visual Basic створює діалогове вікно повідомлення для виведення інформації. Змінна Message передається цій функції як параметр.

4. Щоб скористатися об'єктом класу SmartForm (sf), необхідно його створити. Інакше кажучи, об'єкт має бути створений на базі шаблону, описаного в модулі класу. Для цього в процедуру події Form_Load() форми Form1 додається наступний фрагмент:

 

Private Sub Form_Load()

Set sf = New SmartForm

Set sf.Form = Me

End Sub

 

5. При зміні розмірів форми треба наказати об'єкту SmartForm запам'ятати розмір і положення форми. Вставте наступний фрагмент в процедуру події Form_Resize:

 

Private Sub Form_Resize()

sf.Resize

End Sub

 

6. Нарешті, при закритті форми слід знищити об'єкт sf. Вставте наступний рядок в процедуру Form_Unload():

 

Private Sub Form_Unload(Cancel As Integer)

Set sf = Nothing

End Sub

7. Клацніть на рядку Projectl у вікні проекту і задайте властивості Name значення Перевірка.

Збережете і Запустіть проект. На перший погляд, наше застосування не справляє особливого враження. Спробуйте змінити розміри форми і змістити її в кут екрану, після чого натисніть кнопку [х] і поверніться в IDE. Запустіть додаток наново. Якщо усе було зроблено вірно, форма знаходитиметься в тому ж місці і матиме ті ж розміри, які вона мала на момент закриття. Повторюючи кроки 1-5, ви зможете користуватися " інтелектуальними формами" у своїх застосуваннях.

А тепер я розповім про один інструмент, який спрощує процес візуального проектування і створення класів.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.