Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурные особенности Visual Basic.docx
Скачиваний:
44
Добавлен:
17.11.2019
Размер:
2.86 Mб
Скачать

Свойство ActiveControl

В Visual Basic 6.0 свойство ActiveControl объекта Screen используется для определения элемента управления, на котором установлен фокус. Свойство ActiveControl может использоваться глобально, например в Screen.ActiveControl, где возвращается активный элемент управления на форме, выделенной в данный момент. Если обращение производится к определенной форме, например Form2.ActiveControl, свойство ActiveControl определяет элемент управления, который получит фокус, если указанная форма является активной.

Свойство ActiveForm

В Visual Basic 6.0 свойство ActiveForm объекта Screen используется для определения формы, имеющей в данный момент фокус. Если родительская форма MDI имеет фокус, ActiveForm возвращает дочернюю форму MDI, которая имела фокус до этого.

Свойство MousePointer

В Visual Basic 6.0 свойство MousePointer объекта Screen используется для изменения внешнего вида курсора. После задания оно применяется ко всем формам приложения.

Свойства TwipsPerPixel

В Visual Basic 6.0 свойства TwipsPerPixelX и TwipsPerPixelY объекта Screen используются для преобразования размерности экрана из логических твипов (стандартная единица измерения в Visual Basic 6.0) в точки.

Изменения кода для определения активного элемента управления

В следующем примере кода демонстрируется копирование текста из выделенного в данный момент элемента управления на выделенной форме в буфер обмена:

' Visual Basic 6.0

If TypeOf Screen.ActiveControl Is TextBox Then

Clipboard.SetText Screen.ActiveControl.Text

End If

Изменения кода для определения активной формы

В следующем примере кода демонстрируется изменение заголовка выделенной в данный момент формы:

' Visual Basic 6.0

Screen.ActiveForm.Caption = "This is the selected form"

Изменения кода для определения активной формы в приложении MDI

В следующем примере кода демонстрируется изменение заголовка выделенной в данный момент дочерней формы MDI:

' Visual Basic 6.0

Screen.ActiveForm.Caption = "This is the selected child form"

В Visual Basic существуют объекты, не отображаемые на форме, но использование которых несложно и может принести некоторую пользу. В прошлых главах мы говорили об объектах Printer, Err и DataObject. Давайте поговорим еще о некоторых.

Объект Screen

По-сути, объект Screen представляет собой весь экран или иначе Десктоп (DeskTop). Как и другие объекты, объект Screen имеет определенные свойства. Так, например, почему-то считается, что для определения разрешения экрана надо использовать API-функции. Но это прекрасно можно сделать и внутренними возможностями VB. У объекта Screen есть свойства .Height и .Width, которые и возвращают высоту и ширину экрана в твипах. Эти самые твипы легко преобразовать в пиксели, если использовать два других свойства объекта Screen - .TwipsPerPixelX (которое возвращает количество твипов в пикселе по-горизонтали) и .TwipsPerPixelY (которое возвращает количество твипов в пикселе по-вертикали). Таким образом, чтобы определить разрешение экрана, мы пишем приблизительно следующий код:

Private Sub Command1_Click() 'Объявить переменные Dim VisotaScr As Long 'для высоты Dim ShirinaScr As Long 'для ширины VisotaScr = Screen.Height / Screen.TwipsPerPixelX 'узнаем высоту экрана и преобразовываем ее в пиксели ShirinaScr = Screen.Width / Screen.TwipsPerPixelY 'узнаем ширину экрана и преобразовываем ее в пиксели Text1 = VisotaScr & " x " & ShirinaScr 'выводим результат в Text1 End Sub

Еще одно свойство .ActiveControl содержит ссылку на элемент управления (и его свойства), имеющий фокус. Смысл использования этого свойства следующий. Например, у тебя на формe три текстбокса. И ты хочешь активный текстбокс очистить. Вот в этом случае и можно использовать свойство .ActiveControl, например Screen.ActiveControl.Text=""

т. е. очищается тот объект ( в нашем случае TextBox) , на котором в данный момент находится фокус. Это, конечно, несколько упрощено, по-скольку, во-первых, необходимо проверить, а текстбокс ли это? Может у тебя на форме есть другие элементы, например, PictureBox. Во-вторых, реально это свойство можно использовать только в меню, так как меню не получает фокус и активным элементом остается выбранный объект. При использовании, например, свойства .ActiveControl в процедуре CommandButton, при нажатии на кнопку Command1 фокус перейдет с нужного нам элемента на командную кнопку и мы не получим желаемого результата. Ниже, в этой главе, мы на примере работы с объектом Clipboard будем использовать это свойство применительно к меню.

Аналогично свойству .ActiveControl и свойство и .ActiveForm, но содержит ссылку на активную форму. Тогда, чтобы добраться до какого-либо элемента можно применить, например, такой оператор: Screen.ActiveForm.ActiveControl.Picture Надо сказать, что объект Screen имеет еще свойства MouseIcon и MousePointer, которые позволяют менять вид курсора, но их использование совершенно аналогично этим свойствам для формы, которые мы анализировали в главе 5. Поэтому я не стану занимать этой дребеденью наше драгоценное время и предлагаю перейти к более нужному и интересному.