0

プロパティTTabSetを使用してタブを選択する TestComplete テストがあります。TabIndex

Tab.TabIndex = 1

それはうまくいきます。ただし、そのタブの一部のオブジェクトでは、クリック イベントを有効にする必要があることに気付きました。TabIndexとはいえ、何らかのクリック イベントを使用してタブ項目を選択するにはどうすればよいですか?

4

1 に答える 1

2

に値を割り当てる代わりに、のメソッドをTabIndex呼び出して、そのインデックスでタブの座標を取得し、これらの座標を TestComplete のメソッドに渡すことができます。次に例を示します。TTabSetItemRectClick

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

ただし、このアプローチには次のことが必要です。

  • テストされたアプリケーションは、デバッグ情報を使用してビルドされます (これにより、ItemRectTestComplete で使用できる を含むパブリック メンバーが作成されます)。
  • アプリケーション コードにはItemRectメソッド呼び出しが含まれています (そうしないと、このメソッドは Delphi のスマート リンカによって EXE から除外されるため、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
于 2011-08-29T12:06:35.677 に答える