Visual Basic Робота з TabStrip

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

visual

Мал. 1. Вікно вибору компонентів для проекту

Після цього на панелі інструментів мають з'явитися додаткові елементи керування, але нас зараз цікавить лише один –TabStrip (див. рис. 2).

Мал. 2. Панель інструментів

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

Long

Мал. 3. Варіанти виклику вікна властивостей елемента керування

У вікні, крім додавання (Insert Tab) і видалення (Remove Tab) вкладок, можна так само змінювати стиль відображення вкладок.

ВластивістьStyleвказує на стиль елемента, і може мати такі значення:

(0) tabTabs– елемент має тривимірну рамку та тривимірні вкладки (встановлено за замовчуванням);

(1) tabButtons- елемент без рамки з тривимірними вкладками;

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

ВластивістьTabWidthStyleвстановлює ширину вкладок і може мати такі значення:

(0) tabJustified– ширина вкладок залежить від ширеного тексту заголовка вкладки (встановлено за замовчуванням);

(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дозволяє користувачеві вибирати відразу кілька вкладок.

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

Синтаксис коду програмного додавання нової вкладкивиглядає наступним чином:

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

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

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

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

Обробка подій

Отримати/змінити заголовок активної вкладки можна так:

Для отримання індексу активної вкладки використовуйте такий код:

Так само можна отримати/змінити значення Key і Tag.

Дізнатися кількість вкладок можна так:

Якщо необхідно перевірити активна вкладка чи ні, можна скористатися властивістю Selected, яке повертає значення True якщо вкладка активна, інакше – False.

Private Sub TabStrip1_Click()

If TabStrip1.Tabs(1).Selected Then

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

У цій статті, якщо її можна назвати статтею, я розповів про основні властивості та події елемента управлінняTabStip, сподіваюся ви знайшли тут відповіді на свої запитання, ну а якщо ні, то пишіть мені, я постараюся на них відповісти mailto: [email protected]

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

Для цього потрібно використовувати 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

'КІД МОДУЛЯ OptionExplicit Приватна функція оголошення 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 Приватна функція оголошення 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) Виклик SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc) End Sub

Функція WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long При помилці GoTo xErr If uMsg = WM_MOUSEWHEEL Then Якщо wParam = -7864320 Або 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) Інакше WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam) End If xErr: Кінець функції