Как вызвать событие клика при выборе вкладки в TTabSet через TabIndex? - PullRequest
0 голосов
/ 11 августа 2011

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

Tab.TabIndex = 1

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

1 Ответ

2 голосов
/ 29 августа 2011

Вместо присвоения значения 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
...