Андрій Колесов, Ольга Павлова
Рада 182. Реалізація функції "очікування" в VB
Тут ми покажемо, як можна реалізувати функцію очікування в VB. Спочатку помістіть на форму таймер (Timer1) і встановіть його властивість Interval = 0 і властивість Enabled = False.
Для тестування процедури додайте дві мітки (Label1 і Label2) і командну кнопку (Command1) до форми. Напишіть наступну підпрограму і код події Timer для таймера:
Тепер можете використовувати функцію Wait всюди, де потрібно будь-яка затримка, наприклад:
Рада 183. Підтримка нумерації версій ваших VB-програм
Нумерація версій програм, створених на VB, може бути простою, якщо ви скористаєтеся функцією Version Numbering при створенні EXE-модуля. Для цього клацніть кнопку Options діалогового вікна Make Project, а потім встановіть прапорець Auto Increment у вкладці Make діалогового вікна Project Properties.
Номер версії програми складається з трьох елементів: Major, Minor і Revision. Функція Auto Increment, якщо вона виділена, буде автоматично збільшувати номер Revision на одиницю при кожному запуску команди Make Project для конкретного проекту.
Зазвичай інформація про версії програми використовується в формі About. Для цього просто додайте мітку з ім'ям lblVersion і введіть наступний код для вашої форми:
Якщо для вашої програми номер Major дорівнює 2, номер Minor - 1 і номер Revision - 12, то мітка виведе на екран: "Версія: 2.1.12"
Рада 184. Створення власного зберігача екрану
У вас ніколи не виникало бажання створити свій власний охоронець екрану в VB? Якщо так, то зараз ми вам покажемо простий приклад, як це можна зробити. Ідея дуже проста - в якості заставки буде видаватися форма розміром з весь екран, на яку ви можете за власним бажанням завдати будь-які зображення.
Для початку створіть новий проект Standard EXE. Помістіть на форму елемент управління Label, що містить будь-якої текст. Потім додайте туди елемент управління Timer, для якого встановіть властивість Interval як 1000 (тобто 1 сек). Тепер введіть наступний код для вашої форми:
Після цього встановіть властивість WindowState для форми як Maximized, а властивість Border Style як None. Більшість зберігачів екрану займають повний розмір екрану і не мають рядки заголовка.
Виберіть команду File | Make EXE File і в діалоговому вікні Make Project клацніть кнопку Options. У наступному діалоговому вікні Project Properties в текстовому полі Application Title введіть прописними буквами рядок SCRNSAVE. (Наприклад, ми можемо назвати наш додаток SCRNSAVE: TestApp1.) При завданні імені виконуваного файлу не забудьте поміняти розширення: воно повинно бути .SCR замість .EXE. (Для нашого прикладу назвіть виконуваний файл як TestApp1.scr.) Клацніть OK.
От і все. Тепер не забудьте помістити SCR-файл в каталог \ Windows \ System і поміняйте хранитель екран, як це ви зазвичай робите за допомогою Control Panel.
Рада 185. Використовуйте WithEvents для додавання нових функцій до елементу управління
Коли-небудь ви можете зіткнутися з тим, що у стандартних елементів управління відсутні будь-яких корисних функцій. Для цього можна використовувати традиційний спосіб: написати потрібний код для відповідної події кожного елемента управління. Однак в VB5 і VB6 є команда WithEvents, яка надає просте рішення з використанням класів у таких випадках.
Припустимо, ви хочете вводити в текстове вікно тільки великі літери, щоб при цьому всі вводяться малі літери автоматично перетворювалися в прописні. Крім того, ви хочете, щоб при попаданні курсора миші всередину текстового вікна на екрані з'являлася підказка ToolTipText, що містить координати курсора всередині даного текстового вікна.
Створіть новий проект Standard EXE, розмістіть на формі чотири елементи управління TextBox з іменами Text1, Text2, Text3, Text4 і додайте модуль класу. Введіть наступний код для форми Form1:
Для класу Class1 введіть такий код:
Використовуючи таку програмну конструкцію, ви додасте нові функціональні можливості для всіх чотирьох текстових полів. Але зверніть увагу, що подія KeyPress для елемента управління виконується раніше, ніж відбувається звернення до класу. Тому в поле TextBox4 замість "a" буде вводиться "z", яка потім відразу перетвориться в "Z".
Рада 186. Зміна набору зображень в елементі управління ImageList, пов'язаному з елементом управління Toolbar
У режимі розробки проекту вам може стати в нагоді можливість вільно додавати зображення в елемент управління ImageList, пов'язаний з елементом управління Toolbar, або видаляти їх звідти. І оскільки VB не дозволяє змінювати набір зображень в ImageList, поки він пов'язаний з панеллю інструментів, ми покажемо вам спосіб, як обійти це обмеження.
Крок 1. Заповнення елемента управління ImageList. Помістіть елемент управління ImageList на форму. (Якщо цей компонент не входить в комплект інструментальних засобів вашого проекту, то його можна додати так, як показано в наступній Раді 187.) Клацніть його правою кнопкою миші, а потім виберіть команду Properties для відкриття діалогового вікна Property Pages. Виберіть вкладку Images і клацніть кнопку Insert Picture. У діалоговому вікні Select Picture знайдіть зображення, яке хочете додати в елемент управління ImageList. Дайте йому унікальну властивість Key. Повторіть ці операції, поки не заповните елемент управління ImageList так, як вам хочеться.
Крок 2. Додавання кнопок до панелі інструментів. Клацніть правою кнопкою миші елемент управління Toolbar і потім виберіть команду Properties. У розкрився діалоговому вікні Property Pages виберіть вкладку Buttons. Натисніть кнопку Insert Button і в текстовому полі Key введіть унікальне ім'я, присвоєне зображенню в елементі управління ImageList. Кожна кнопка з зображенням повинна мати той же властивість Key, що і відповідне зображення в компоненті ImageList. Кожна кнопка без зображення, наприклад, tbrSeparator або tbrPlaceholder, не повинна мати властивості Key.
Крок 3. У події Load для форми встановіть зв'язок елементів управління ImageList і Toolbar:
Крок 4. Дайте зображення кнопок на панелі інструментів:
Рада 187. Завантаження елементів управління ActiveX
Для використання елементів управління ActiveX, що поставляються з VB 5.0 / 6.0, необхідно додати їх до комплекту інструментальних засобів Toolbox.
Крок 1. У меню Project виберіть команду Components або клацніть правою кнопкою миші панель інструментів для виклику діалогового вікна Components.
Крок 2. Елементи, наведені в цьому діалоговому вікні, включають всі зареєстровані вбудовані об'єкти, проектувальники і елементи управління ActiveX.
Крок 3. Встановіть прапорець, що знаходиться зліва від імені елемента управління, який ви хочете додати.
Крок 4. Клацніть OK для закриття діалогового вікна Components. Тепер всі вибрані елементи управління ActiveX з'являться в комплекті інструментальних засобів Toolbox.
Така процедура дуже проста, якщо ви знаєте точне ім'я додається елемента управління. Проблема виникає тоді, коли елемент, наведений в діалоговому вікні Components, містить кілька компонентів або його назва відрізняється від імені компонента. Тут вам може допомогти наведена нижче таблиця c переліком е елементів управління ActiveX, що поставляються з VB 5.0 / 6.0:
Рада 188. Використання типу Date з джерелом даних ADO
Перше, що спадає на думку при роботі з датами в VB, - це використовувати змінну типу Date. Однак насправді такий підхід виявляється помилковим, якщо ви маєте справу з датами Null, одержуваними з джерела даних ADO. Причина полягає в тому, що поведінка внутрішнього типу даних Date відрізняється від типу даних adDate ADO.
Щоб побачити цю різницю між Date і adDate, уважно вивчіть наступний код (для VB6 не забудьте встановити посилання Microsoft ActiveX Data Objects Recordset 2.0 Library, але те ж саме вірно і для Microsoft ActiveX Data Objects 2.0 Library):
Змінна типу String - теж не кращий варіант, оскільки строкова змінна Null не є поданням дати Null. На жаль, згідно з настановою, яка використовується за умовчанням в DataEnvironment в VB6, при переміщенні поля Date за допомогою методу "перетягни і залиш" на форму поміщається елемент управління TextBox.
Таким чином, щоб отримати правильне внутрішнє уявлення дати, слід використовувати змінну типу Variant.
Властивість App.Path може використовуватися для отримання шляху до поточного виконуваного файлу програми. Будьте, однак, обережні, так як при цьому можливий невеликий ляп. Якщо додаток виконується в кореневому каталозі, то в кінці шляху буде додаватися зворотна коса риска. Однак, якщо додаток виконується в будь-якому іншому місці, то результат не матиме зворотної косої межі на кінці. Використання наступної функції допоможе вирішити дану проблему:
Наприклад, AppPath ( "test.txt") буде правильно додавати ім'я файлу незалежно від того, в якому каталозі знаходиться додаток.
Рада 190. Експорт вмісту елемента управління Grid в текстовий файл
Тут наводиться підпрограма, яка використовується для експорту вмісту елементів управління MSGrid або MSFlexGrid в ASCII-файл необмеженого розміру. Як роздільник ви можете задавати будь-який символ, який вам подобається. Крім того, у вас є можливість вказувати символ, в який буде полягати вміст кожного осередку. Використовуючи наступний, наприклад, виклик підпрограми, ви укладете комірки в подвійні лапки:
А так виглядає сама підпрограма: