Вместо присвоения значения TabIndex
вы можете вызвать метод TTabSet
ItemRect
, чтобы получить координаты вкладки по ее индексу, а затем передать эти координаты в TestComplete's Click
метод. Вот пример:
Sub Main
Set tabSet = Sys.Process("Project1").VCLObject("Form1").VCLObject("TabSet1")
For i = 0 To tabSet.Tabs.Count
ClickTab tabSet, i
Delay 1000
Next
End Sub
Sub ClickTab(TTabSet, ItemIndex)
Dim rect, x, y
Set rect = TTabSet.ItemRect(ItemIndex)
x = (rect.Left + rect.Right) / 2
y = (rect.Top + rect.Bottom) / 2
TTabSet.Click x, y
End Sub
Однако этот подход требует, чтобы:
- Ваше протестированное приложение построено с отладочной информацией (это делает общедоступные члены, включая
ItemRect
, доступными для TestComplete).
- Код приложения содержит вызов метода
ItemRect
(в противном случае этот метод будет исключен из EXE интеллектуальным компоновщиком Delphi, поэтому он будет недоступен для TestComplete).
Кроме того, если ваш элемент управления вкладками имеет больше вкладок, чем отображается (т. Е. Tabs.Count
> VisibleTabs
), вам необходимо прокрутить его, чтобы сначала отобразить нужную вкладку. Это можно сделать, например, с помощью свойства FirstIndex
:
Sub ClickTab(TTabSet, ItemIndex)
If ItemIndex >= TTabSet.FirstIndex + TTabSet.VisibleTabs Then
TTabSet.FirstIndex = ItemIndex
End If
Dim index, rect, x, y
index = ItemIndex - TTabSet.FirstIndex
Set rect = TTabSet.ItemRect(index)
x = (rect.Left + rect.Right) \ 2
y = (rect.Top + rect.Bottom) \ 2
TTabSet.Click x, y
End Sub