Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Створення класу 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, ви зможете користуватися " інтелектуальними формами" у своїх застосуваннях. А тепер я розповім про один інструмент, який спрощує процес візуального проектування і створення класів.
|