Как вызвать событие клика при выборе вкладки в TTabSet через TabIndex?

У меня есть тест TestComplete, который выбирает вкладку в TTabSet, используя свойство TabIndex:

Tab.TabIndex = 1

Это отлично работает. Однако я заметил, что для некоторых объектов на этой вкладке требуется, чтобы событие щелчка было включено. Тем не менее, как я могу выбрать элемент вкладки через TabIndex с каким-то событием щелчка?


person GreenMtnGal    schedule 11.08.2011    source источник


Ответы (1)


Вместо того, чтобы присваивать значение TabIndex, вы можете вызвать метод TTabSet ItemRect для получить координаты вкладки по ее индексу, а затем передать эти координаты методу Click TestComplete. Вот пример:

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 (иначе этот метод будет исключен из исполняемого файла интеллектуальным компоновщиком 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
person Helen    schedule 29.08.2011