Рейтинг блогов

Visual Basic: Работа с TabStrip

дата добавления: 16 сентября 2003 / 22:33, просмотров: 14067, комментариев: 5

Элемент управления TabStrip служит для отображения вкладок. Для добавления его в проект, выберите меню Проект => Компоненты (Project => Components) и в появившемся окне выделите Microsoft Windows Common Control 6.0 (см. рис 1).

 

Рис. 1. Окно выбора компонентов для проекта

Рис. 1. Окно выбора компонентов для проекта

 

После этого на панели инструментов должны появится дополнительные элементы управления, но нас в данный момент интересует только один – TabStrip (см. рис. 2).

 

Рис. 2. Панель инструментов

Рис. 2. Панель инструментов

 

TabStrip содержит семейство объектов Tab, которые, собственно, и являются вкладками. Для визуального добавления новой вкладки, кликните правой кнопкой мыши по размещенному на форме TabStrip и выберите меню Properties или в окне параметров объекта кликните по маленькой кнопке в поле Custom (см. рис 3).

 

Рис. 3. Варианты вызова окна свойств элемента управления

Рис. 3. Варианты вызова окна свойств элемента управления

 

В появившемся окне, помимо добавления (Insert Tab) и удаления (Remove Tab) вкладок, можно так же изменять стиль отображения вкладок.

 

Свойство Style указывает на стиль элемента, и может иметь следующие значения:

 

(0) tabTabs – элемент имеет трехмерную рамку и трехмерные вкладки (установлено по умолчанию);

(1) tabButtons – элемент без рамки с трехмерными вкладками;

(2) tabFlatButtons – элемент без рамки с плоскими кнопками;

 

Свойство TabWidthStyle устанавливает ширину вкладок и может иметь следующие значения:

 

(0) tabJustified – ширина вкладок зависит от ширены текста заголовка вкладки (установлено по умолчанию);

(1) tabNonJustified

(2) tabFixed – ширина вкладок выравнивает по самой широкой вкладке.

 

Свойство ImageList ссылается на элемент ImageList, что позволяет использовать картинки во вкладках. Для использования картинки во вкладке, необходимо указать номер(индекс) картинки (в элементе ImageList) в свойстве вкладки – Image.

 

Свойство Placement позволяет определить положение вкладок по отношению к элементу управления и может иметь следующие значения:

 

(0) tabPlacementTop – над элементом (установлено по умолчанию);

(1) tabPlacementBottom – под элементом;

(2) tabPlacementLeft – слева от элемента;

(3) tabPlacementRight – справа от элемента;

 

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

 

(0) tabTabStandart – обычные вкладки (установлено по умолчанию);

(1) tabTabOpposite – если вкладки размещаются в несколько рядов, то при выборе вкладки из одного ряда все вкладки из других рядов будут перемещаться в противоположную сторону.

 

Свойство MultiRow равное True позволяет отображать вкладки, в зависимости от их количества, в несколько рядов.

 

Если свойству HotTracking присвоить значение True, то при прохождении курсора мыши над заголовком вкладки, он будет подсвечиваться.

 

Свойство Separators позволяет установить, будут ли отображаться разделители между кнопками, если свойство Style задано tabButtons или tabFlatButton.

 

Свойство TabMinWidth позволяет задать минимальную допустимую ширину вкладки, но только при условии что свойство TabWidthStyle не равно tabFixed.

 

Свойство MultiSelect позволяет пользователю выбирать сразу несколько вкладок.

 

Программное добавление/удаление вкладок

 

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

 

Имя_элемента.Tabs.Add ([pvIndex], [pvKey], [pvCaption], [pvImage])

 

Параметры указанные в квадратных скобках не обязательны, т.е. можно создать вкладку просто написав такой код:

 

TabStrip1.Tabs.Add

 

и в элементе TabStrip1 появится пуская вкладка. Создать вкладку с заголовком можно так:

 

TabStrip1.Tabs.Add , , "Вкладка 1"

 

Для удаления вкладки необходимо знать индекс удаляемой вкладки. Обратите внимание индексация начинается с 1, а не с 0. Удаление производится следующим образом:

 

TabStrip1.Tabs.Remove (pvIndex)

 

Обработка событий

 

Получить/изменить заголовок активной вкладки можно следующим образом:

 

TabStrip1.SelectedItem.Caption

 

или просто

 

TabStrip1.SelectedItem

 

Для получения индекса активной вкладки используйте такой код:

 

TabStrip1.SelectedItem.Index

 

Таким же образом можно получить/изменить значения Key и Tag.

 

Узнать количество вкладок можно следующим образом:

 

TabStrip1.Tabs.Count

 

Если необходимо проверить активна вкладка или нет, то можно воспользоваться свойством Selected, которое возвращает значение True если вкладка активна, в противном случае – False.

 

Private Sub TabStrip1_Click()

 

  If TabStrip1.Tabs(1).Selected Then

    MsgBox "Вкладка 1 активна!"

  End If

 

End Sub

 

The конец

 

В этой статье, если ее можно назвать статьей, я рассказал об основных свойствах и событиях элемента управления TabStip, надеюсь вы нашли здесь ответы на свои вопросы, ну а если нет, то пишите мне, я постараюсь на них ответить mailto: nemiro_as@vbnet.ru

Комментарии (всего: 5)

Добавить комментарий rss
Автор: Shtirlits @ 12 января 2008, 14:42   ·   ссылка
А нельзя ли как нибудь изменять внешний вид вкладки, допустим на овальный или многоугольный )))
Автор: Алексей Немиро @ 13 января 2008, 04:15   ·   ссылка
Можно, если с регионами пошаманить :) В VB 6.0 это достаточно геммарно.
Автор: SLIM @ 22 января 2008, 11:16   ·   ссылка
А как можно сделать чтобы переходить по табам роликом мышки...???
Автор: Алексей Немиро @ 22 января 2008, 12:38   ·   ссылка
Для этого нужно использовать API, когда у TabStrip будет фокус нужно отлавливать скролинг и переключать табы, в зависимости от направления скрола мышки.

Что касается скрола, то вот небольшой пример:
'КОД ФОРМЫ
Option Explicit

Private Sub Form_Load()
 Call Hook(Me.hwnd)
End Sub

Private Sub Form_Unload(Cancel As Integer)
 Call UnHook(Me.hwnd)
End Sub

'КОД МОДУЛЯ
Option Explicit
Private Declare Function CallWindowProcA Lib "user32" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetWindowTextA Lib "user32" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Const GWL_WNDPROC = -4
Private Const WM_MOUSEWHEEL = &H20A
Private lpPrevWndProc As Long, Wheel As Integer

Sub Hook(hwnd As Long)
 lpPrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Sub UnHook(hwnd As Long)
 Call SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc)
End Sub

Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 On Error GoTo xErr
 If uMsg = WM_MOUSEWHEEL Then
  If wParam = -7864320 Or wParam = -23592960 Or wParam = -15728640 Then Wheel = -1
  If wParam = 7864320 Or wParam = 23592960 Or wParam = 15728640 Then Wheel = 1
  Call SetWindowTextA(Form1.hwnd, "Wheel " & Wheel)
 Else
  WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
 End If
xErr:
End Function
Автор: Игорь @ 24 мая 2008, 08:29   ·   ссылка
А можно ли сменить цвет вкладок и самого поля TabStrip со стандартного телесного на белый например, ато в интерьер программы не вписывается?

Добавить комментарий

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