Методи і події форм
Основні властивості форм я розглядав в статті "Фундамент програми або основні властивості форм", настав час розглянути основні методи і події форм.
Тільки після цього приступайте до написання програмного коду.
А незнання головних моментів роботи з тим чи іншим елементом управління може привести до того, що час, витрачений на написання коду, буде втрачено, а результат не досягнутий. Буде досить прикро, якщо ви розробили алгоритм для свого застосування, забувши про метод, який, припустимо, дозволить виконати весь ваш код двома рядками. І вийде, що всі ваші зусилля були витрачені даремно.
Щоб такого не сталося, ще раз раджу, завжди пам'ятати, як і за допомогою чого можна зробити, ту чи іншу дію над елементом управління або змінною.
Для початку, відкрийте діалогове вікно Options: в меню Tools. І перевірте, чи встановлена галочка Auto List Members - автоматично виводити список всіх властивостей і методів обраного об'єкта.
Рис 1. Діалогове вікно Options, вкладка Editor
Тобто якщо це опція включена, то після введення імені та точки буде виводитися список всіх властивостей і методів для обраного об'єкта. Якщо галочка не варто, раджу її поставити, що дуже полегшить написання програмного коду. Завжди є можливість додати властивість або метод, зайвий раз, не набираючи його на клавіатурі.
Порада. Щоб в коді програми звернутися до форми, замість імені поточної форми, можна використовувати оператором Me, що дозволить трохи спростити код і зайвий раз не згадувати ім'я форми.
Рис 2. Меню, яке містить методи і властивості обраного об'єкта
Вибрати потрібний метод можна, як клацанням миші, так і натисканням клавіші Tab на клавіатурі. Якщо скористатися клавішею Enter, то ви перейдете на наступний рядок і не встановите значення для обраного властивості, тобто доведеться докладати нових зусиль, щоб повернутися на потрібний рядок.
Властивості і методи мають різні іконки, так що їх легко розрізнити.
Розглянемо основні методи роботи з формою.
Circle - дозволяє намалювати еліпс, коло, дугу або сектор. Властивість форми AutoRedraw встановіть в True.
Малює коло червоного кольору з радіусом 500.
Малює еліпс, стискаючи коло по вертикальній осі.
Програма малює коло, розбитий на сектори з різними стилями штрихування і різними кольорами малювання.
Hide - дозволяє видалити форму з екрану, але не вивантажує з пам'яті.
Line - дозволяє намалювати лінію або прямокутник. Властивість форми AutoRedraw встановіть в True.
В круглих дужках вказані обов'язкові параметри, в квадратних необов'язкові.
Малює лінію синього кольору.
Малює лінію тим кольором, який встановлений у властивості ForeColor форми.
Малює квадрат, залитий червоним кольором.
Move - дозволяє перемістити форму.
Переміщує форму, змінюючи розмір.
Переміщує форму, параметри розміру не вказані.
PaintPicture - дозволяє скопіювати певну область на формі або PictureBox в інший малюнок. Властивість форми AutoRedraw встановіть в True.
Константи параметра "операція":
Резервне копіювання даних зображень з Picture1 на форму, обрізаючи його відповідно заданими координатами.
Point - повернення значення кольору обраної точки. Якщо координати випадуть за межі форми, поверне -1.
PopupMenu - дозволяє показати контекстне меню.
Print - друк тексту на формі. Властивість форми AutoRedraw встановіть в True.
PSet - малювання точки вказаного кольору в заданому місці. За товщину об'єкта відповідає властивість DrawWidth.
Refresh - виробляє оновлення форми.
Scale - установка масштабу.
ScaleX - використовується для перетворення значення висоти форми з одних одиниць (встановлених в ScaleMode) в інші.
ScaleY - використовується для перетворення значення ширини форми з одних одиниць (встановлених в ScaleMode) в інші.
SetFocus - передає фокус формі. Форма може отримати фокус, тільки якщо на ній немає елементів управління, або вони не видно або не доступні.
Show - завантажує або показує форму на екрані, якщо не завантажена в пам'ять, то метод дозволяє завантажити її.
TextHeight - повертає висоту зазначеного рядка.
TextWidth - повертає ширину зазначеного рядка.
Розглянемо основні події форми.
Рис 3. Список Object
Рис 4. Список Procedure
Для того щоб відстежити, як в системі виникають події, тобто в якій черговості, розглянемо приклад. У цьому прикладі, при виникненні події на форму, буде поміщений відповідний текст, який буде інформувати, в якому ж порядку виникають події. Першим виникає подія Initialize.
Рис 5. Результат виконання програми
Activate - відбувається, коли форма стає активною, тобто отримує фокус. Спрацьовує лише при перемиканні між формами проекту. Відбувається кожен раз при активації форми.
Click - відбувається після клацання миші, на вільному місці форми. Як правої, так і лівої кнопки.
DblClick - відбувається за подвійним клацанням, правої та лівої кнопки. Причому подія Click все ж відбувається.
Deactivate - подія відбувається, в тому випадку, коли форма перестає бути активною. Протилежно події Activate. Виникає при втраті фокуса. Спрацьовує лише при перемиканні між формами проекту.
DragDrop - відбувається при завершенні операції перетягування. У той момент, коли елемент скидається на форму.
DragOver - відбувається, коли об'єкт-джерело знаходиться над об'єктом-одержувачем, але кнопка ще не відпущена.
GotFocus - відбувається при отриманні формою фокусу. При натисканні клавіші Tab або за допомогою методу SetFocus.
Initialize - відбувається при створенні форми, причому відбувається один раз. До завантаження форми, під час конфігурації.
KeyDown - відбувається, коли форма має фокус і користувач натискає кнопку на клавіатурі.
KeyPress - відбувається при натисканні та утриманні клавіші. Причому момент утримання відбувається дуже швидко, майже миттєво. За допомогою цієї події можна отримати код натиснутою клавіші.
KeyUp - відбувається, коли форма має фокус і користувач відпускає клавішу на клавіатурі.
Load - завантаження форми в пам'ять, до її появи на екрані. Дана подія має тільки форма. Форма може бути вивантажено і заново завантажена в ході виконання програми, скільки завгодно разів. Отже, подія може виникати за бажанням розробника кілька разів.
Напевно, це саме використовується подія. Код події виконується поки форма, ще не видно на екрані.
Можна використовувати для настройки поведінки і зовнішнього вигляду форми.
Центрує форму на екрані.
LostFocus - відбувається коли форма втрачає фокус.
MouseDown - відбувається під час натискання кнопки миші на формі.
MouseMove - відбувається при переміщенні покажчика миші над формою.
MouseUp - відбувається лише тоді, коли користувач після натискання на формі, відпускає кнопку миші.
Події MouseDown, MouseMove і MouseUp мають однакові параметри:
Button - містить номер клавіші миші.
Shift - містить інформацію про стан клавіш ALT, CTRL і SHIFT.
X, Y - координати покажчика миші, де відбулася подія.
QueryUnload - відбувається перед подією Unload, перед закриттям форми. Якщо при обробці події параметру Cancel привласнити значення True, то вивантаження форми буде скасована.
Параметр UnloadMode містить значення, з якої причини відбувається закриття форми.
Константи параметра UnloadMode:
- Const vbAppTaskManager = 3 - після натискання Ctrl + Alt + Del
- Const vbAppWindows = 2 - по завершенню Windows
- Const vbFormCode = 1 - в коді програми викликано подія Unload
- Const vbFormControlMenu = 0 - після натискання "Закрити" в віконному меню, в заголовку форми.
- Const vbFormMDIForm = 4 - по закриттю головної форми, закривається дочірня.
Resize - відбувається при зміні розмірів форми. Можна використовувати для масштабування елементів управління при зміні розміру форми.
Terminate - виконується самим останньою подією, після Unload. Дана подія має тільки форма.
Unload- вивантаження форми і видалення з пам'яті. Дана подія має тільки форма. За допомогою параметра Cancel можна скасувати видалення форми.