プロパティTTabSet
を使用してタブを選択する TestComplete テストがあります。TabIndex
Tab.TabIndex = 1
それはうまくいきます。ただし、そのタブの一部のオブジェクトでは、クリック イベントを有効にする必要があることに気付きました。TabIndex
とはいえ、何らかのクリック イベントを使用してタブ項目を選択するにはどうすればよいですか?
プロパティTTabSet
を使用してタブを選択する TestComplete テストがあります。TabIndex
Tab.TabIndex = 1
それはうまくいきます。ただし、そのタブの一部のオブジェクトでは、クリック イベントを有効にする必要があることに気付きました。TabIndex
とはいえ、何らかのクリック イベントを使用してタブ項目を選択するにはどうすればよいですか?
に値を割り当てる代わりに、のメソッドをTabIndex
呼び出して、そのインデックスでタブの座標を取得し、これらの座標を TestComplete のメソッドに渡すことができます。次に例を示します。TTabSet
ItemRect
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
メソッド呼び出しが含まれています (そうしないと、このメソッドは 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