Работа с текстовыми полями

Следующий пример показывает, как используется на практике метод SetFocus:

1. Откройте проект \MSDN98\98vs\1033\Samples\VB98\Controls\Controls.vbp, если он не был открыт ранее.

2. Запустите приложение командой Run > Start. В диалоговом окне Control Examples нажмите кнопку Text Box. На экране появляется форма, похожая на рис. 3.3.

Устанавливая различные переключатели в рамке, можно выполнять некоторые операции с левым текстовым полем. Свойство Multiline правого поля установлено в True, в этом нетрудно убедиться по внешнему виду текста. В приложениях, работающих с текстами, нередко используются текстовые поля с активизированными свойствами Multiline и ScrollBars. В таких случаях текстовое поле растягивается

 

Рис. 3.3. Работа с текстовыми полями

 

на всю форму, а ее размер фиксируется (свойством BorderStyle). Если форма должна иметь переменные размеры или является дочерней формой интерфейса MDI, вам придется динамически изменять размеры текстового поля при изменении размеров формы. Например, можно включить следующий фрагмент в процедуру события Resize формы:

 

txtText1.Top = frmForm1.ScaleTop

txtText1.Left = frmForm1.Scaleleft

txtText1.Width = frmForm1.Width

txtText1.Height = frmForm1.ScaleHeight

 

Свойства Scale... относятся к внутренним размерам формы. Следовательно, свойства Height и ScaleHeight формы имеют различные значения. В значении ScaleHeignt не учитывается пространство, занимаемое заголовком и границами формы.

3. Завершите работу приложения и активизируйте форму frmText в окне дизайнера.

4. Дважды щелкните на переключателе Установить курсор после 5 символа, чтобы вызвать окно программы с кодом процедуры:

 

Private Sub optInsert_Click()

‘установить курсор после 5 символа

txtDisplay.SelStart = 5

‘ передать фокус текстовому полю,

‘чтобы изменения были наглядно видны

txtDisplay.SetFocus

End Sub

 

Свойство SelStart определяет начальную позицию (в символах) выделенного фрагмента текстового поля. В данном случае выделение должно начинаться с 5-го символа. Метод SetFocus возвращает фокус ввода текстовому полю txtDisplay.

 

5. Откройте процедуру события Click переключателя optSelect:

 

Private Sub optSelect_Click()

‘установить курсор в начало

txtDisplay.SelStart = 0

‘ определить длину строки и выделить

‘соответствующее количество символов

txtDisplay.SelLength = Len(txtDisplay.Text)

‘передать фокус текстовому полю,-

‘чтобы изменения были наглядно видны

txtDisplay.SetFocus

End Sub

 

На примере этого фрагмента видно, как выделить все содержимое текстового поля в программе. Если бы в меню присутствовала команда Select All, ее процедура была бы похожа на этот фрагмент. Если вы хотите узнать, какой текст выделен в поле, обращайтесь к свойству SelText.

6. Замените процедуру события cmdClose_Click следующей:

 

Private Sub cmdClose_Click()

If txtDisplay.SelLength > 0 Then

MsgBox "Выделен текст" & txtDisplay.SelText

End If

End ' Выгрузить форму

End Sub

 

7. Запустите приложение. В диалоговом окне Text Box Properties выделите слово Multiline и нажмите кнопку Close. Примерный вид экрана изображен на рис. 3.4.

 

Рис. З.4. Выделенный фрагмент в свойстве SelText

 

Надписи

Надпись (см. рисунок) отчасти похожа на текстовое поле — она тоже используется для вывода текста. Главное отличие заключается в том, что пользователь не может изменить текст надписи по своему усмотрению (хотя его можно изменить как свойство во время выполнения программы).

Самое важное свойство надписи — Caption (а не Text, в отличие от текстового поля). Надписи часто содержат справочную информацию. Они могут использоваться как самостоятельно, так и в виде «подсказок» для текстового поля, списка или другого элемента. В последнем случае надпись кратко описывает элемент. Например, если на вашей форме находится текстовое поле для ввода имени клиента, слева или сверху от него можно разместить надпись и установить ее свойству Caption значение Имя клиента.

 

 


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



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