Visual Basic 6. Руководство разработчика


         

Элемент управления - часть 2


Откройте новый Standard ЕХЕ-проект, добавьте код, который выполняет выравнивание текста на форме и его трехмерную обрисовку. Код довольно длинен, но прост. Для выравнивания строки необходимо вычислить длину и ширину строки в текущем шрифте, установить указатель на форме и вывести строку методом Print. Для вертикального выравнивания строки следует найти разность между высотой формы и высотой строки и, затем, и вычислить расстояния над и под строкой.

Для достижения эффекта трехмерности нужно отобразить одну и ту же строку дважды, сначала белым цветом, а затем, поверх нее, черным цветом. Строки должны быть немного смещены друг относительно друга, а направление смещения будет определять эффект вогнутости или выпуклости. Величина смещения будет определять глубину эффекта. Используйте смещение в 1—3 пикселя. Следующий код отображает строку на форме, принимая во внимание значение переменных формы m_Caption (Надпись), m_TextAlignment (Выравнивание текста на форме), m_Effect (Эффект). Значения возможных установок приведены в  коде в виде комментариев. Вот код, который дублирует на форме функцию элемента управления  FLEXLabel.

Программа 16.1. Реализация элемента управления Flexible Label

Sub DrawCaption ()

Dim CaptlonWidth As Long, CaptlonHeight As Long

Dim CurrX As Long, CurrY As Long

Dim oldForeColor As OLE_COLOR

CaptionHeight = Me.TextHeight(m_Caption)

CaptionWidth = Me.TextWidth(m_Caption)

Select Case m_TextAlignment

Case 0: ' Верхнее, левое

CurrX = 30

CurrY = 0

Case 1: ' Верхнее, по центру

CurrX = (Me ScaleWidth - CaptionWidth) / 2

CurrY = 0

Case 2: ' Верхнее, правое

CurrX = Me.ScaleWidth – CaptionWidth - 30

CurrY = 0

Case 3: ' По центру, левое,

CurrX = 30

CurrY = (Me.ScaleHeight - CaptionHeight) / 2

Case 4: ' По центру, по центру

CurrX = (Me.ScaleWidth - CaptionWidth) / 2

CurrY = (Me.ScaleHeight - CaptionHeight) / 2

Case 5: ' По центру, левое

CurrX = Me ScaleWidth – CaptionWidth - 30

CurrY = (Me.ScaleHeight - CaptionHeight) / 2

Case 6: ' Нижнее, правое




Содержание  Назад  Вперед