Методы графических полей

Графическое поле обладает большим количеством методов, чем его упрощенный аналог, рисунок. В приведенной далее таблице важнейшие методы, как обычно, выделены полужирным шрифтом.

 

Circle LinkRequest PSet TextHeight
Cls LinkSend Refresh TextWidth
Drag Move ScaleX ZOrder
Line OLEDrag ScaleY LinkExecute
PaintPicture SetFocus LinkPoke Point
ShowWhatsThis      

 

Методы Circle, Cls, Line, PaintPicture, Print и PSet предназначены для вывода графики и текста в графических полях в режиме выполнения программы — разве что метод Cls (напоминающий старую команду DOS для очистки экрана) используется для стирания. Вызов метода ZOrder при выполнении программы приводит к тому же результату, что и команда Format > Order > Bring To Front или Format > Order > Send To Back. Пользуясь методом ZOrder, можно определить порядок перекрытия объектов. Тем не менее следует учесть, что на форме существует три графических «слоя», а метод ZOrder работает только в пределах слоя данного элемента. Все неграфические элементы, кроме надписей (например, кнопки), относятся к верхнему слою. Графические поля и другие графические элементы (а также надписи) принадлежат к среднему слою. Нижний слой содержит результаты вызова графических методов — например, круг, нарисованный методом Circle, окажется именно в нем. Этим он отличается от круга, образованного специальным управляющим элементом — контуром, который будет находиться в среднем слое. Все это означает, что вам не удастся расположить графическое поле над кнопкой методом ZOrder — оно всегда будет оставаться в нижнем слое. Метод ZOrder перераспределяет объекты лишь в пределах одного слоя.

 

ПРИМЕЧАНИЕ

Z-порядок определяет относительное расположение объектов внутри одного слоя, или уровня, формы. В режиме конструирования относительное расположение объектов можно изменить командами Format > Order > Bring to Front или Format > Order >. Send to Back, а во время выполнения программы следует пользоваться методом ZOrder.

Таймеры

Таймер (см. рисунок) принадлежит к числу элементов, которые никогда не отображаются на экране в режиме выполнения. Это означает, что вам не придется выделять для него место на форме — он может располагаться где угодно, даже поверх существующих элементов. Фактически элемент-таймер выполняет всего одну функцию — проверяет показания системных часов и действует в соответствии с результатом.

 

Свойства таймеров

Как видно из следующей таблицы, у таймера относительно мало свойств:

 

Enabled Index Interval
Left Name Parent
Tag Тор  

 

Если не считать свойства Name (имена таймеров рекомендуется снабжать префиксом tmr), в этом списке имеется лишь два полезных свойства — Enabled и Interval. В самом деле, таймер начинает делать что-то полезное лишь после того, как будет задано значение последнего свойства (предполагается, что свойство Enabled имеет принятое по умолчанию значение True). Свойства Left и Тор избыточны — конкретное положение таймера на форме не имеет никакого значения. Значение свойства Interval задается в миллисекундах. Другими словами, чтобы таймер отсчитывал секунды, их число необходимо умножить на 1000. После истечения заданного срока (при условии, что таймер не был заблокирован) элемент генерирует событие Timer. Для этого он часто проверяет показания системных часов.

 

ПОДСКАЗКА

Значение свойства Interval задается в миллисекундах. Чтобы таймер отсчитал определенное количество секунд, необходимо задать для свойства Interval количество секунд, умноженное на 1000. Учтите, что свойство Interval может принимать значения от 0 (отключение таймера) до 65 535 (65,5 с).

 

События таймеров

C таймерами связано всего одно событие — Timer. Как было сказано ранее, оно наступает по истечении заданного интервала, определяемого свойством Interval. Чтобы оно не произошло после истечения указанного срока, задайте свойству Enabled таймера значение False.

 

Методы таймеров

Таймеры не обладают никакими методами.

 

Работа с таймером

Чтобы лучше понять, как работает таймер, мы создадим часы в заголовке формы:

1. Создайте новый проект командой File > New Project и выберите значок Standard EXE.

2. Задайте свойству Name формы Form1 значение frmMain, а свойству Caption -значение Приложение-часы.

3. Разместите таймер на форме frmMain. Задайте свойству Name значение tmrTime.

4. Задайте свойству Interval значение 500. Состояние системных часов будет проверяться каждые полсекунды. Этот интервал был выбран из-за того, что таймер Visual Basic не отличается особой точностью, однако для нашего приложения подойдет и он.

5. Добавьте следующий фрагмент в секцию (General) (Declarations) формы frmMain:

 

Option Explicit

Private OldCaption As String

 

6. Добавьте следующий фрагмент в процедуру события Form_Load:

 

Private Sub Form_Load()

OldCaption = Me.Caption

End Sub

 

7. Теперь добавьте следующий фрагмент в процедуру события Timer таймера:

 

Private Sub tmrTimer_Timer() Dim msg As String

msg = OldCaption & ": " & Time$ Caption = msg

End Sub

 

8. Сохраните приложение и запустите его командой Run > Start. Примерный вид окна приложения показан на рис. 3.12.

 

Рис. 3.12. Приложение-часы

 

Возможно, вы заметили, что заголовок приложения слегка мерцает. Чтобы избавиться от этого неприятного эффекта, следует свести к минимуму количество обновлений заголовка в процедуре события Timer:

 

Private Sub tmrTimer_Timer()

Dim msg As String

 

msg = OldCaption & ": " & Time$

 

If msg<>Caption Then

Caption = msg

End If

End Sub

 

Оператор If...Then проверяет, изменилось ли время, возвращаемое функцией Time$ Если строка msg отличается от Caption, мы обновляем свойство Caption в соответствии с новым значением времени. В противном случае мы ничего не делаем и не] изменяем Caption — мерцание исчезает.

 

 

ПОДСКАЗКА Вы можете воспользоваться функцией Format, чтобы изменить формат представления времени. Данная функция получает ряд именованных параметров, а также некоторые параметры, которые вы определяете сами. Ее возможности не ограничиваются форматированием даты и времени — эта функция работает с числами и строками. Функция Format подробно описана в электронной документации — найдите раздел Format Function и щелк-ните на ссылке See Also в верхней части окна.

 

Полосы прокрутки

Полосы прокрутки (см. рисунок) на формах не следует путать с полосами про- крутки, которые автоматически вставляются в большие текстовые поля или \ списки. Элемент полосы прокрутки представляет собой совершенно независимый объект, не привязанный к другим элементам (текстовым полям или спискам). Горизонтальная и вертикальная полосы прокрутки ничем не отличаются друг от друга, кроме ориентации. Оба элемента обладают одинаковыми свойствами, событиями и методами. Термин «полоса прокрутки» в этом разделе относится как к горизонтальным, так и к вертикальным полосам.

Полоса прокрутки обычно используется для увеличения или уменьшения некоторого значения. Например, с ее помощью можно изменять интенсивность цвета, число или громкость звука на мультимедиа-устройстве. Полоса прокрутки обычно применяется для изменения величины в пределах непрерывной шкалы. Если вы просто хотите увеличивать или уменьшать исходное число, попробуйте воспользоваться нестандартным элементом — счетчиком.

Единственная проблема с полосами прокрутки заключается в том, что при получении фокуса они могут мерцать на экране. Чтобы избавиться от мерцания, передайте фокус другому элементу.

 

ПОДСКАЗКА Чтобы избавиться от мерцания, передайте фокус другому элементу при помощи метода Set Focus. Оператор, содержащий вызов этого метода, должен завершать процедуру события Change полосы прокрутки.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: