Основи Visual Basic 5.0
У додатках VB 5.0 виконувані рядки повинні розміщуватися всередині процедур або
функцій. Оператори в VB рідко використовують номери рядків, а будь-які з них зазвичай
починаються з нового рядка. Строки обмежені довжиною в 1023 символу. можна
розширювати рядка, використовуючи символ "_" після пробілу в кінці рядка. Кілька
операторів можна поєднувати в одному рядку, розділяючи їх ":".
Коментарі задаються верхній лапками ( '), або оператором REM. Коментар
може бути виведений окремим рядком, або в кінці рядка. У другому випадку
краще використовувати лапки ( '), ніж REM, тому що REM тут потребує роздільник (:).
Наприклад,
DIM FARENG 'мінлива для обчислення t0 за Фаренгейтом
або
DIM FARENG: REM мінлива для обчислення t0 за Фаренгейтом
Оператор End - програма зупиняється. Після оператора End закриваються всі
вікна, відкриті програмою, а сама вона стирається з пам'яті. Всередині програми VB
може бути скільки завгодно операторів End, але звичайно краще використовувати тільки
один оператор End у процедурі обробки подій QueryUnload для основної форми.
У цьому випадку всі оператори End замінюються на Unload Me, який викликає собі
QueryUnload для форми.
Одним з основних операторів є присвоювання значення змінним і
установка значень властивостей.
Наприклад,
1) Result = 0.5? 20
ім'я значення
змінної
Можна використовувати оператор LET
2) об'ект.свойство = значення
txtDisplay.Text = ""
Властивості за замовчуванням
У будь-якого об'єкта VB є властивість за замовчуванням. Наприклад, для текстового поля
це властивість Text. При посиланні на даний властивість можна не вказувати його ім'я.
Наприклад, txtDisplay = "Привіт!"
Деякі властивості можуть приймати значення TRUE або FALSE. У VB5 є
вбудовані константи для позначення даних властивостей, наприклад, cmdExit = False
буде приховувати командну кнопку, поки не з'явиться вираз cmdExit = True.
Всередині себе VB використовує значення 0 для False і -1 для True (чи будь-яке
нульове значення).
Можна використовувати наступне вираз для зміни властивості на протилежне
cmdExit.Visible = Not (cmdExit.Visible).
Змінні. Імена змінних менше 255 символів починаються з літери, за якою
ідуть інші літери, цифри або символ "_". Регістр значення не має. В
як імена змінних можна використовувати зарезервовані слова, наприклад,
Print. Прийнято використовувати змішаний регістр при завданні імен змінних,
складаються з декількох слів, наприклад, CurrentValue.
Типи змінних. Використовується 14 стандартних типів змінних. Можна визначити
та власний тип. Основні типи:
String - рядкові змінні. Для позначення цього типу можна додати символ
"$" До кінця імені.
Наприклад, Message $ = txtDisplay.Text
Integer - цілочисельних мінлива в діапазоні -32768? 32767. Для позначення в
кінці імені додається "%" арифметичний оператор виконується швидко.
Наприклад, IntVar% = 5
LongInteger - довге ціле від -2147483648 до 2147483647. Позначається "&".< br />
LongInt & = 123456789.
SinglePrecision зберігає дробові числа з точністю до 7 цифр. Для на чисел може
досягати 38 знаків з позначенням "!". Обчислення ч даними змінними буде
приблизними.
DoublePrecision "#". Числа з точністю до 16 цифр і довжиною до 300 символів.
Обчислення теж приблизні, а швидкість невелика. Використовується для наукових
розрахунків.
Currency - використовується під час перетворення десяткових чисел в двійкову форму і
навпаки. Позначення - "@". Може мати до 14 цифр до коми і до 4 цифр -
після. Використовується для фінансових розрахунків.
Date - значення дати і часу від 00 час.1 января.100 року до 00час.31
декабря.9999 р. Значення позначається "#".< br />
Time = # May 5, 1999 #
Byte - для зберігання цілих чисел від 0 до 255. Заощаджує оперативну пам'ять і
розміри масивів. Використовується також при роботі з двійкової сумісності.
Variant - дані будь-якого типу. Якщо VB не знає тип прийнятих даних,
використовується цей тип. Використання його уповільнює роботу програм, тому що вимагає
часу і ресурси для операцій перетворення типів.
На відміну від інших версій Basic в одній програмі не можна використовувати одні й ті
ж імена змінних, що відрізняються тільки типом. Наприклад, A% і А!
При першому використанні змінної VB тимчасово привласнює змінної тип
Variant і пусте значення. Це значення зникає в той момент, коли змінної
присвоюється реальне. Будь-який тип даних має своє "порожнє" значення. Для
String це рядок нульової довжини "". Для чисельних змінних це 0.
Можна не використовувати ідентифікатори для позначення типу змінної, а
використовувати оператор Dim. Оператор Dim служить для оголошення типів змінних.
Dim Years As Integer
Dim Amount As Currency
. . . .
Оголошення можна комбінувати в одному рядку.
Dim Years As Integer, Amount As Currency
Dim Result без типу присвоює змінній тип Variant.
Якщо в програмі використовуються неоголошені змінні, легко допустити помилку
при написанні їх імені. У цьому випадку використовується примусове оголошення
змінних за допомогою оператора Option Explicit. Цей оператор не використовується в
конкретних процедурах обробки подій, а розміщується в розділі General форми,
щоб бути доступним всім процедурам обробки подій. Після того, як VB
зустрічає оператор Option Explicit, він не дозволяє використовувати
неоголошені змінні. Цей оператор можна використовувати для зміни
значень за замовчуванням.
Область видимості змінних
У програмах VB5 всі змінні ізольовані усередині процедур. Тобто мінлива
Result в одній процедурі не впливає на значення змінної з тим же ім'ям в
іншою процедурою. Тобто змінні є локальними по відношенню до
процедур, якщо не зазначено інакше.
Іноді необхідно, щоб якась мінлива була доступнавсем процедур форми.
Такі змінні називають змінними рівня форми або модуля. Змінні рівня
форми також оголошуються в розділі General за допомогою операторів Private або Dim.
У великих проектах, в яких процедури і форми зберігаються в окремих модулях, а
не підключаються до форми, можна оголосити глобальну змінну, доступну в будь-якій
частини проекту.
Це робиться в розділі Declarations будь-якого модуля коду:
Public Amount As Single
або Global Amount As Single
Коли VB викликає процедуру обробки події, старі значення локальних
змінних знищуються. Вони приймають значення за замовчуванням. Такі змінні
називаються динамічними. Але в деяких випадках необхідні статичні
змінні, які не ініціалізувалися повторно при виклику процедури. Часто
такі змінні використовуються для лічильників, їх використовують, щоб зробити
елементи управління видимими або невидимими. Щоб оголосити статичну
змінну всередині процедури необхідний оператор Dim замінити на Static.
Static Amount As Single, Is_Visible As Boolean.
Якщо необхідно, щоб всі змінні у процедурі були статичними, необхідно
додати
Static Private Sub cmdLom_Click ()
Строки
Операція конкатенації для складання кількох рядків + або &
Наприклад, A $ = "Іванов"
B $ = "Іван"
C $ = "Іванович"
D $ = A $ & B $ & C $
або D $ = A $ + B $ + C $
Відмінність. За допомогою "&" можна об'єднувати рядкові та інші види. Наприклад, C =
A% & B $, зміниться їх тип на Variant.
Для переходу до нової рядку при друці символів (переклад каретки) використовується
вбудована const VbCrLf. Наприклад, щоб розірвати рядок в інформаційній
панелі або в многостроковом текстовому полі можна
Message $ = "1-й рядок"
Message $ = Message $ + VbCrLf + "2-й рядок"
MsgBox Message $
Зауваження. Якщо в програмі використовуються числа і вони не присвоюються змінної
Variant, то VB вважає:
Якщо число не має десяткового дробу і лежить в діапазоні від -327686 +32767, то
це Integer.
Якщо не має десяткового дробу і лежить в діапазоні для Long Integer, то це Long
Int.
Якщо має десяткову крапку і лежить в діапазоні для чисел із звичайною точністю (7
цифр), то це Single precision.
Якщо має десяткову крапку, але лежить поза діапазону, то це Double precision.
Такі приблизні розрахунки часто приводять до проблем. Наприклад, VB вважає,
що тип результату з двома цілими числами є ціле. Наприклад результат Print
123456? 789 виходить за рамки цілого і виникає помилка переповнення. Тоді
необхідно використовувати ідентифікатор хоча б для однієї змінної Print 123456 &
? 789.
Можна також використовувати вбудовані функції для перетворення типів, наприклад,
LInt - округлює число до цілого, Clong - до довгого цілого, Cvar - перетворить
до Var.
Якщо проводяться операції зі змінними Variant, то не виникає проблем з
перетворенням типів.
Крім звичайних, десяткових чисел, VB використовує двійкові і шістнадцяткові.
Останні позначаються з префіксом & H. Наприклад, число 49 = & H31.
Шістнадцяткові цифри використовуються для кодування різних кольорів: будь-який
код кольору складається з 6 шістнадцяткові цифр від & H000000 & = 0 до & HFFFFFF &
(довге ціле) (16777215).
Взагалі конкретний колір визначається кількістю R червоного, зеленого і синього G
квітів B у всіляких сполученнях. У коді кольору VB дві останні цифри
означають кількість червоного, дві середні - кількість зеленого, а два перші -
кількість синього, наприклад
& H0000FF & - максимально червоний
& H00FF00 & - максимально зелений
& HFF0000 & - максимально синій
& H000000 & - чорний
& HFFFFFF & - білий
& H00FFFF & - жовтий (червоний + зелений)
& H808080 & - сірий (рівні кількості кольорів)
Константи
Для незмінних значень в програмі використовуються константи. Константи
оголошуються аналогічно змінним, за тими ж правилами: ім'я містить не більше 200
символів, перший символ буква. Якщо в програмі використовується лише одна форма,
то константу можна оголосити у розділі DeclarationHous для об'єкта General. Або
ж можна й безпосередньо у процедурі, але це гірше. Константу оголошують через
зарезервовані слова Const. Наприклад,
Const Pi = 3? 14159
Const Course = "Informatics"
VB5 має тільки набір вбудованих констант, наприклад, VbCrLf або VbOrOnly. Їх
можна додавати до тексту програми з вікна Object Browser (F2 або меню View).
Щоб вставити Const в програмі:
Курсор повинен бути у вікні коду.
У вікні Object Browser клацнути на кнопці Copy to Clipboard.
Перейти в програмі на місце вставки і натиснути Ctrl + V.
Вбудовані функції
Особливе значення мають рядкові функції, тому що в полях введення інформація зберігається
в текстовому форматі або в форматі ariant. Використання ж неявних
перетворень типів з Variant часто призводить до проблем і є більш
повільним.
Рядкові функції:
= Space (число пропусків) - видає рядок, що складається з одних прогалин, причому
кількість символів у рядку визначається параметром у дужках.
= String (число, рядковий вираз $) - формує рядок, що містить
однакові символи.
Наприклад, X $ = String (10, "z") - 10z
= Len (рядковий вираз) - довжина поточного рядка з проблемами і надрукованими
символами.
= Mid (рядок, початок [, довжина])
Mid ( "Visual Basic", 1,6) = "Visual"
Mid ( "Visual Basic", 8,6) = "Basic"
Mid ( "Visual Basic", 8) = "Basic"
Приклад. Підрахунок числа точок у рядку
Points% = 0
Length% = Len (Text $)
For I% = 1 to Length%
If Mid (Text $, I%, 1) = "." Then
Points $ = Points $ + 1
End If
Next I%
= Left (дані для, № до позиції)
= Right (рядок, с № позиції)
Функцію Mid можна використовувати для зміни змісту всередині поточного рядка.
Наприклад
X $ = "Best Basic"
Mid (X $, 1,5) = "Quick"
яка кількість символів
з якого символу буде взято з нового рядка
вставляється нова
рядок поверх старої частини
= Insert ([початкова позиція], рядок для пошуку, підрядок)
чи є даний рядок частиною іншого рядка, видає номер позиції, з якою
починається підрядок.
Text $ = "QuickBasic"
X $ = Instr (1, Text $, "Basic") = 6.
Якщо підрядок не знайдено Instr повертає нульове значення (False).
Приклад.
If Instr (Text $, "?") Then
Print "символ знайдено"
Else
Print "Не знайдено"
End If
= LСase, = UСase - перетворить всі символи рядка в нижній (верхній) регістр
Замість Lcase $ Ucase $
= Str lomp - для порівняння рядків
Нехай X = StrComp (A $, B $)
Якщо A $ або B $ порожня, то х = NULL
Якщо використовувати StrComp (A $, B $, 1) - регістр не враховується, а якщо StrComp
(A $, B $, 0) - регістр враховується.
= Trim (рядок $) - знищує прогалини початку і кінці рядка
LTrim (рядок $) - знищує прогалини в лівій частині рядка
RTrim (рядок $) - знищує прогалини в правій частині
Всі рядкові функції, за винятком Mid, не змінюють рядок, а створюють її
копію і потім з нею працюють.
Керуючі структури в програмі
Певні цикли
For ___ Next
For I% = 1 to 10 (% - цілочисельний тип для прискорення роботи циклу)
Print I%
Next I%
Цикл завершується, не в той момент, коли значення лічильника дорівнює кінцевому,
а коли воно перевищує його.
Приклад. Друк всіма доступними шрифтами екрану.
Private Sub Form_Click ()
Dim I As Integer
For I = 0 to Screen.FontCount - 1
FontName = Screen.Fonts (I)
Print "Це шрифт"; Screen.Fonts (I)
Next I
End Sub
Невизначені цикли
Не виконуються фіксоване число разів. Цикл може виконуватися або ні в
залежно від результату, обчислюваного всередині циклу
Do
Вираз
Loop Until виконується умова
Приклад. Перевірка пароля
Private Sub Form_Load ()
Do
X $ = InputBox $ ( "Пароль?")
Loop Until X $ = "VB"
End Sub
Для зупинки нескінченного процесу використовують клавіші "Break" або RunEnd або
закрити програму. У програмі можна використовувати оператор Exit Do (або Exit
For), які переводять програму до оператора наступного після циклу.
Складні невизначені цикли
У невизначених циклах перевірка відбувається в кінці циклу і лічильника
збільшується ще на 1. Іноді це викликає зайве оновлення лічильника. Можна
пересунути перевірку умови на початок циклу:
Do Until умова
Тіло циклу Вираз
Loop
Do While
Do
Loop Until аналогічний
Do
Loop While умова
Приклад.
Do Do
Loop Until N> 5? Loop While N
Do While
Do
Вираз
Loop While умова
або
Do While умова
Вираз
Loop
В таких циклах можна об'єднувати кілька умов, наприклад
Do While X
?
?
Loop
Цикл While/Wend
While умова
. . . . .
Wend
Наприклад, While x> 0
S = S + x
Wend
Може бути декілька вкладених циклів. Будь-який Wend відноситься до найближчого While.
Do __ Loop дає структуру і гнучкість циклу.
Умовні оператори
If умова Then оператор
Наприклад, If N> = 0 and N
Оператор Select Case
Може обробляти декілька варіантів вибору.
Select Case мінлива або вираз
Case оператор перевірки умови
дію 1
.
.
.
Case. . . . . .
дію n-1
End Select
Приклад:
Select Case Ball
Case Is <13 дозволяє перевірити значення змінної>
Grade = 2
Case Is <18>
Grade = 3
Case Is <22>
Grade = 4
Case Else
Grade = 5
End Select
Приклад 1. If Then Else
Private Sub Form_QueryUnload (Cansel As Integer, UnloadMode As Integer)
X% = MgBox ( "Ви впевнені?", VbYesNo)
If X% = VbNo Then
Cancel = True
Else
Cancel = False
End IF
End Sub
Приклад 2.
If optColor1.Value Then
Color $ = "Червоний"
Else If optColor2.Value Then
Color $ = "Зелений"
Else If optColor3.Value Then
Color $ = "Синій"
Else
Color $ = "Білий"
End If
Приклад:
Select Case Den
Case 1
Print "Пн"
Case 2
Print "ВТ"
.
.
.
Case 7
Print "НД"
End Select
У фразою Case можна задавати значення змінної у вигляді діапазону
Select Case Den
Case 1 to 5
Print "Робочий день"
Case Else
Print "Вихідний"
End Select
або перерахуванням можливих значень
Select Case Den
Case 6, 7
Print "Вихідний"
Case Else
Print "Робочий день"
End Select
Масиви
2 види масиви: керівники і масиви змінних (звичайні масиви або списки).
Керуючі масиви складаються з декількох однотипних елементів управління,
що використовують загальні властивості, за що відрізняється порядковим номерами або індексами.
Може бути не більше 255 елементів у такому масиві. При цьому нові елементи на
формі поміщаються на місце вихідних елементів керуючого масиву. Тому при
розміщення на формі їх слід позиціонувати і рухати, щоб вони не
перекривали один одного. Наприклад, можна створити на формі матрицю написів або
текстових полів.
Одномірні масиви або списки визначаються ім'ям і положенням елемента в
списку. Наприклад дані про випуск продукції за 12 місяців.
Можуть бути фіксовані і динамічні списки. Розміри їх можуть бути великі і
визначаються обсягом вільної пам'яті.
У фіксованих списків розмір не змінюється, а динамічні списки можуть змінювати
свій розмір. Для фіксованих списків пам'ять виділяється на початку роботи
програми і існує менший ризик переповнення пам'яті.
Динамічні списки більш гнучкі в роботі.
Списки можуть бути видимими всьому пр?? пропозицій, даній формі (модуля) або тільки
однією процедурою.
Створення фіксованого списку:
а) у формі (модулі). Опис міститься в розділі декларацій форми (модуля)
Dim Massiv $ (20)
доступний будь-якій процедурі модуля або форми;
б) у межах усього проекту (глобальний)
Public Massiv (20) As String - 21 елемент від 0 до 20
або Global
в) локальний масив, який зберігається до наступного виклику процедури
Private Sub ...........< br />
Static Massiv A (20)
Створення динамічних масивів.
а) у формі
У розмірі декларації форми Dim DYNMAS () As String
А всередині процедури виділяємо потрібний розмір
Private Sub ...........< br />
Dim N%
ReDim DYNMAS (N) As String
При роботі команди ReDim інформація в масиві втрачається.
Для збереження інформації при зміні розміру масиву
ReDim Preserve DYNMAS (N +1) As String
або (N-1) видалить останній елемент
б) Глобальний динамічний список, видимого в межах всього проекту
Public DYNMAS () As String
або Global
Далі можна використовувати ReDIM в будь-якій процедурі всього проекту.
Ввести дані в масив можна за допомогою INPUT BOX, текстового поля.
Для зміни нумерації в масиві не з 0, а з 1 - оператор Option Base 1 в
розділі декларацій форми (модуля).
Можна задавати масив діапазоном значень
вместоDim A (19)
Dim A (1980 TO 2000)
Звільнення ОП від динамічний масивів Erase DYNMAS/Для фіксованих списків
Erase тільки очищає масив.
Вікна введення
Вікна вводу-це інша можливість, крім текстових полів, для введення
інформації. Функція InputBox $ виводить на екран модальні діалогові панель,
яка на відміну від текстових полів має фіксований розмір вікна. Біля вікна
введення Есто рядок заголовка та 4 елементи: підказка, командні кнопки OK і
Cancel і поле вводу. Синтаксис функції: Строкова мінлива =
InputBox ( "підказка" [, заголовок] [поумолчанію] [, X] [, Y] [, файл довідки, контекст])
де підказка-текстовий рядок або строкою мінлива (1024 символи),
заголовок-зміст рядка заголовка вікна,
за замовчуванням - початкове вміст вікна введення,
X, Y-відстань між лівим (верхнім) краями екрану і вікно вводу. Якщо параметри
не задані, то вікно розташовується по центру на 1/3 висоти екрана.
Наприклад, MyInput $ = InputBox ( "Введи число", "Запит", "0", 100,200)
Виведення інформації
Для виведення інформації безпосередньо на формі використовується метод Print. Його
синтаксис:
Назва форми.Print вираз
Наприклад: frmHello.Print "Привіт!"
VB5 виводить інформацію, починаючи з того місця, що визначають властивості
CurrentX і CurrentY-горизонтальна і вертикальна позиції. При використанні
методу Cls для очищення вмісту форми CurrentX і CurrentY = 0 і метод Print
виводить інформацію, починаючи з лівого верхнього кута.
Виведення інформації можна здійснювати різними шрифтами, в залежності від
використовуваного устаткування і програмного забезпечення. Якщо операційна система
не знаходить даний шрифт, вона вибирає найближчий аналог. Для вибору шрифту в
програмному коді використовується наступний оператор присвоєння:
ІмяОб'екта-контейнера.Font.свойство = значення
? Наприклад, frmHello.Font.Name = "Arial"
frmHello.Font.Size = 20
frmHello.Font.Bold = True і т.д.
У качнстве об'єкта-контейнера можуть бути командна кнопка, форма, напис, поле
введення. Але тільки форми і графічні вікна можуть працювати одночасно з
декількома шрифтами. В інших елементах управління зміна шрифту впливає
на весь текст.
Друк табличних даних
У VB5 друк тексту можна здійснювати в заданому форматі. Зона має розмір в
14 символів. В основному зони використовуються при друку непропорційними
шрифтами типу Courier, тому що кожна колонка по ширині дорівнює середньому значенню
ширини символу. Якщо параметри в методі Print розділені комами, то дані
виводяться в декількох зонах. Наприклад:
Me.Print Family $, Name $
Після обробки вирази методом Print, здійснюється перехід на новий рядок.
Якщо використовується Print без параметрів, виводиться порожній рядок. Якщо не потрібно
переходити на новий рядок, в кінці рядка вставляється символ ";". Для друку з
заданої колонки можна використовувати функцію Tab, Наприклад:
Print Tab (номер колонки%);
Для вставки вказаного числа прогалин, починаючи з поточної позиції, використовується
функція Spc (число пробілів%)
Функція Format
Для виведення числових даних у потрібному форматі використовується функція
Format (числове вираження, рядок формату $)
Результатом даної функції є рядок, в якій вираз представлено по
заданого формату. Наприклад:
Me.Print Format (123.456789 ,"###.###")
дають результат 123,46. Незначущий нулі на початку та в кінці числа ігноруються. Для
виведення незначних нулів використовується формат "000.00". Якщо необхідно вивести
символи "-", "+", "$","(",")" або пробіл, їх розміщують безпосередньо в
форматі. Наприклад:
Me.Print Format (Amount ,"$###.###")< br />
Іменовані формати
Іменовані формати є вбудованими форматами VB5 і полегшують роботу з
форматування виведеного тексту.
Іменований форматОпісаніе
General NumberСтрока цифр без роздільник для тисяч
CurrencyВиводіт 2 цифри праворуч від дес. точки і враховує роздільник для
тисяч
FixedПо принаймні одна цифра ліворуч і дві праворуч від десяткового дробу
StandardТо ж і роздільник тисяч
PercentЧісло у вигляді відсотка. Виводить дві цифри праворуч від дес.точкі
ScientificНаучная форма
Yes/NoЕслі число дорівнює 0, то виводить No, інакше Yes
True/FalseЕслі число равно1, то виводить True, інакше False
On/OffЕслі число равно1, то виводить On, інакше Off
General DateВиводіт дату і/або час. Якщо відсутній дрібна частина,
виводиться тільки дата, якщо ціла частина, то-время.Напрімер 23.12.98
10:30:45
Long DateПолний формат Windows для виведення дати Wedn 23 Dec 1998
Medium DateОбичний формат Windows для виведення дати 23 - Dec-98
Short DateСокращенний формат Windows для виведення дати 23.12.98
Long TimeВремя на годину, мін, сек
Medium TimeВремя В 12-годинному форматі: час, мін і AM/PM
Short TimeВремя на годину, хв у 24-годинному форматі
Наприклад,
Me.Print Format (Amount, "Currency")
Me.Print Format (Amount, "###,###.##")< br />
Me.Print Format (Now, "General Date")
Об'єкт Printer
Vb5 дозволяє легко встановлювати властивості принтера, використовуваного в системі.
Команда PrintForm виводить на принтер графічний образ вікна форми. Її синтаксис:
ІмяФорми.PrintForm
Команда здійснює побітового перенесення форми з заголовком і рамкою з екрана на
форму і не володіє достатньою гнучкістю.
Звичайний спосіб виведення інформації на принтер полягає у використанні методу
Print, пов'язаного з об'єктом Printer. Метод Print враховує орієнтацію сторінки
і може використовувати властивості CurrentX і CurrentY для точного позиціювання
тексту і точок на сторінці. Його синтаксис:
Printer. Print текст
При цьому зберігаються можливості методу Print: ";" "," Tab, Spc, а також
можливість керування властивостями шрифта:
Printer. Font.Name = "Aryal"
Printer. Font.Size = 18
А зміна шрифту принтера не впливає на попередній текст.
Властивості об'єкта Printer:
СвойствоНазначеніеЗначенія
ColorModeопределяет тип прінтера1-монохромний
2 - кольоровий
Pageномер поточної сторінки
Pagesколічество сторінок
Copiesколічество друкованих копій
PrintQualityкачество друку (якщо це підтримує драйвер принтера) 1 -
чорнова друк
2-низька роздільна здатність
3-середнє дозвіл
4-високий дозвіл
CurrentX, CurrentYТекущіе координати тексту
Fontsдоступние шрифти принтера
FontCountкол. доступних шрифтів принтера
Font.Name, Font.Size, Font.Bold, Font.Italic ... характеристики шрифту
ScaleModeед. виміру масштабу страніци0-користувача
1-твіпи (за замовчуванням)
2-пункти
3-пікселі
4-символи
5-дюйми
6-мм
7-см
ScaleLeftРасстояніе від лівої межі
ScaleTop
ScaleWidth
ScaleHeight
Методи об'єкта Printer: МетодСодержаніе
PrintПечать сторінки
NewPageПерейті на нову сторінку
EndDocЗакончіть роботу з документом. (Звільнення пам'яті і пересилання
сторінок в диспетчер друку)
Scaleопределяет координатну систему користувача
TextHeightОпределяет висоту символу
TextWidthОпределяет ширину символу
Приклад. Форма містить командну кнопку "Друк". Програмний код виводить на
друк 2 сторінки. На першому друкується "Стор.1". На другому "Стр.2".
Private Sub cmdPrint_Click ()
Printer.Print "Стор." + Str (Printer.Page)
Printer. NewPage
Printer.Print "Стор." + Str (Printer.Page)
Printer. EndDoc
EndSub
Об'єкт Screen.
Об'єкт Screen дозволяє управляти розміщенням форм і виведенням інформації на
екрані.
Властивості Об'єкту Screen.
СвойствоНазначеніе
MousePointerуказатель миші
Fontsдоступние шрифти екрану
FontCountкол. доступних шрифтів екрану
Widthшіріна екрану (в твіпах)
Heightвисота екрану
Методів немає.
Приклад. Встановити розмір форми дорівнює 50% від розміру екрана.
Private Sub Form_Load ()
Me. Width = Screen. Width/2
Me. Height = Screen. Height/2
EndSub
Робота з файлами.
Елементи керування для роботи з файлами
FileListBox-список файлів.
Списки файлів виводять за замовчуванням імена файлів у поточному каталозі. Більшість
властивостей списку файлів аналогічні звичайному переліку (розміри, розташування на
формі, колір, шрифт, вертикальна лінійка прокрутки). Аналогічно списки файлів
можуть реагувати на всі події звичайних списків. Однак для вибору файлів
звичайно використовується не одинарний, а подвійне клацання миші DblClick.
Основні властивості Списку файлів:
СвойствоСодержаніе
ListМассів членів списку файлів
ListCountКол. членів списку файлів
ListIndexІндекс масиву
FileNameОбозначеніе файлу
PathТекущій Шлях для списку файлів
PatternФільтр, шаблон. Визначає вид показу у списку файлів
Наприклад, ім'я вибраного файлу можна визначити як filFile.List (ListIndex) або
як властивість FileName. Вивести список файлів у масив FileNames $ (I%) можна з
допомогою наступного коду:
For I% = 0 to filFile.ListCount - 1
FileNames $ (I%) = filFile.List (I%)
Next I%
Властивість Pattern задає тип відображуваних файлів або шаблон *,?. За замовчуванням
фільтр встановлений в значення *.*. Кілька фільтрів відокремлюються один від одного
";". Зміна властивості Pattern активізує подія PatternChange.
Властивість Path встановлює або повертає поточний шлях для списку файлів.
Однак для зміни поточного шляху в операційній системі слід використовувати
команду ChDir. Зміна властивості Path активізує подія PathChange.
Зміна властивості FileName активізує подія і PatternChange і PathChange.
Події Списку файлів:
СобитіяОпісаніе
Click
DoubleClick
MouseDawn
MouseUp
MouseMove
KeyUp, KeyDawn, KeyPress
DragDrop, DragOver
GotFocus, LostFocus
PathChangeІзмененіе поточного шляху для списку файлів
PatternChangeІзмененіе шаблону для відображення файлів у списку
Приклад події PathChange
Sub File1_PathChange ()
Label1.Caption = "Path:" & Dir1.Path 'Show path in label.
End Sub
Sub Dir1_Change ()
File1.Path = Dir1.Path 'Set file path.
End Sub
Sub Form_Load ()
Label1.Caption = "Path:" & Dir1.Path 'Show path in label.
End Sub
Sub Drive1_Change ()
Dir1.Path = Drive1.Drive 'Set Dir path.
End Sub
Sub Dir1_Change ()
File1.Path = Dir1.Path 'Set File path.
End Sub
DirectoryListBox-список каталогів.
Елемент керування DirListBox - відображає дерево каталогів поточного диска.
Вміст списку каталогів оновлюється при подвійному натисканні миші. Підкаталоги
поточного каталогу нумеруються від 0 до ListCount - 1. Сам поточний каталог має
індекс -1, батьківський -2, вище -3, ... При подвійному натисканні миші викликається
подія Change і змінюється значення властивості Path.
Основні властивості Списку каталогів.
СвойствоСодержаніе
ListМассів членів списку каталогів
ListCountКол. членів списку каталогів
ListIndexІндекс масиву
PathТекущій Шлях для списку каталогів
ParentДля доступу до властивостей, подій і методам батьківської форми
даного елемента
Події Списку каталогів
СобитіяОпісаніе
Click
MouseUp, MouseUp, MouseMove
KeyUp, KeyDawn, KeyPress
DragDrop, DragOver
GotFocus, LostFocus
ChangeІзмененіе у списку каталогів
Для того. щоб зміна в списку каталогів відбилося списку файлів, можна
використовувати процедуру:
Private Sub dirBox_ Change ()
filFile1.Path = dirBox.Path
End Sub
При цьому для списку каталогів Path вказує вибраний каталог, а для списку
файлів - каталог, файли якого відображаються в списку.
DriveListBox-список дисків.
На відміну від попередніх елементів список дисків є що випадає. Список
дисків відображає поточний диск, а коли користувач клацає на кнопці зі
стрілкою, виводить список всіх доступних дисків.
Основні властивості Списку дисків
СвойствоСодержаніе
DriveОпределяет поточний диск
ListCountКол. членів списку дисків
ListIndexІндекс масиву дисків
ListМассів членів списку дисків
ParentДля доступу до властивостей, подій і методам батьківської форми
даного елемента
Події Списку дисків
СобитіяОпісаніе
KeyUp, KeyDawn, KeyPress
DragDrop, DragOver
GotFocus, LostFocus
ChangeІзмененіе у списку дисків
Основною властивістю є властивість Drive, яке використовується для отримання
і встановлення поточного диска. Ця властивість використовується для синхронізації роботи
списку дисків і списку каталогів. Наприклад,
Private Sub drvBox_ Change ()
dirBox.Path = drvBox. Drive
Ch Drive drvBox. Drive 'Якщо потрібно змінити поточний диск ОС
End Sub
Файли послідовного доступу
Використовуються коли:
а) рідко вносяться зміни
б) інформація у файлі обробляється від початку до кінця
в) якщо потрібно додавати інформацію в кінець файлу.
Для здійснення операції читання або запису з файлом його потрібно відкрити командою
Open. Після Open варто ім'я файлу, строкою мінлива або рядок у подвійних
лапках. Якщо файл не поточному каталозі, потрібно вказати шлях до нього.
Запис інформації в файл:
Open "назва файлу" for Output as # 1
# 1 - це ідентифікатор файлу - число від 1 до 255 із символом #. Максимальне
число одночасно відкритих файлів визначаються параметром у Config.sys.
За командою Open резервується файловий буфер в пам'яті комп'ютера. У міру
заповнення буфера активуються відповідний диск і весь блок інформації
надсилається безперервним потоком на диск (кількість буде встановлюватися в
Config.sys). Після закінчення роботи з файлом він закривається командою Close #
ідентифікатор файлу. Команда Close скидає інформацію на диск і очищає
буфер. Для скидання вмісту буфера на диск (в критичних ситуаціях)
використовується команда Reset. Для введення інформації у файл можна використовувати
команду Print #
"Запис в файл
Open "File 1" For Output As # 1
Print # 1, "1 2 3 4 5" або Print # 1, txtDisplay.Text
Close # 1
Якщо в поточному каталозі є файл з таким ім'ям, то цією командою він буде
знищений.
Close без параметрів закриває усі файли.
Для визначення обсягу відкритого файлу можна використовувати команду LOF
(ідентифікатор файлу)
Open "File 1" For Output As # 1
Print # 1, "1 2 3 4 5"
Print LOF (1)
Замість Print можна використовувати Write # ідентифікатор файлу, список змінних.
Читання з файлу
Open "назва файлу" For Input As # ідентифікатор файлу
Здається вільний ідентифікатор, який в даний момент не використовується в
програмі. Або так:
FileNumber% = FreeFile
Open "назва файлу" For Input As # FileNumber%
Після цього можна використовувати оператор Line Input # для рядковому читання
інформації з файлу:
Open "File1" For Input As # 1
Line Input # 1, A $ приймає в A $ всю інформацію до Enter
Print A $
Close # 1
Або Input # ідентифікатор файлу, список змінних, якщо запис за допомогою
Write, txtDisplay
Якщо файл складної структури, складається з полів і записів, то файл буде читатися
цілими записами командою LineInput, або можна читати інформацію з окремих
полів командою Input #
Наприклад, читання записів з файлу Spisok в масив
1. Визначаємо тип користувача
Type StudentRecord
Name As String
Adress As String
End Type
2. Оголошуємо масив записів типу Student як глобальну змінну
Global StudentAdress () As StudentRecord
Sub Proc ()
Dim FileNum As Integer, I As Integer
ReDim StudentAdress (1 to 150)
FileNum = FreeFile
Open "Spisok" For Input As # FileNum
For I = 1 to 150
Input # FileNum, StudentAdress (I). Name
Input # FileNum, StudentAdress (I). Adress
Next I
Close FileNume
End Sub
Читання текстового фала в текст, поле
. . . .
FileNum = FreeFile
Open "My.txt" For Input As FileNum
txtDisplay.Text = Input (LOF (FileNum), FileNum)
Close # FileNum
де LOF (FileNum) розмір файлу в байтах
Дозапісь інформації в існуючий послідовний файл
При цьому рядки, які будуть виведені в файл приєднуються до рядків, які
вже міститися у файлі. Для цього служить оператор
Open "назва файлу" For Append As # ідентифікатор файлу
При цьому:
- VB відкриває файл, а якщо він не існує, то створює і створює
відповідний буфер;
- Знаходить коні?? файла на диску;
- Готує до запису в кінець файлу.
Нехай існує текстовий файл My.txt і треба дописати в його кінець рядок "До
побачення ":
FileNum = FreeFile
Open "My.txt" For Append As FileNum
Print # FileNum, "До побачення"
Close # FileNum
Під час обробки великих файлів часто необхідно перевіряти на досягнення кінця
файлу. Для цього існує оператор EOF (ідентифікатор файлу).
Фрагмент програми читання інформації з файлу, створеного за допомогою оператора
Print #
. . . . .
B $ = ""
FileNum = FreeFile
Open "My.txt" For Input As # FileNum
Do Until EOF (FileNum)
Line Input # FileNum, A $
B $ = B $ + A $
Loop
txtDisplay.Text = B $
Close # FileNum
Файли прямого доступу
Нагадують базу даних. Файл складається з впорядкованих записів однакового
розміру. Існує запис, що складається з полів, в яких міститися дані.
Забезпечує швидкий пошук інформації, але дисковий простір використовується
неефективно.
При створенні файлу вказується максимальна довжина існуючої запису. Команда
створення файлу:
Open "MyLib.dat" For Random As # ідентифікатор файлу
Len = довжина запису, можна визначати за допомогою функції Len (ім'я змінної
запису) в поточному каталозі.
Відкритий файл прямого доступу може бути прочитаний і записаний практично
одночасно.
Close # ідентифікатор файлу - закриває файл.
Кожен запис у файлі має номер запису. Це дозволяє працювати з конкретною
записом. При описі запису задаються користувача типом:
Type Books
Auther As String * 30
Title As String * 40
End Type
Запис, що містить п'яту запису файлу в змінну:
Get # FileNum, 5, NewBook (якщо NewBook типу Books)
Запис із змінної в сорокових запис файлу:
Print # FileNum, 40, NewBook
Створені типи записів визначають розмір файлу прямого доступу. Розмір файлу
визначається функцією FileLen ( "ім'я файлу"). Розмір запису Len (NewBook) в
байтах.