TestCompleteのデバッグ情報エージェントがコントロールのすべてのネイティブ メソッドとプロパティへのアクセスをツールに提供できるように、デバッグ情報を使用してアプリケーションをコンパイルする必要があります。TestComplete がデバッグ情報を見つけたら、次の方法でツリー項目にアクセスできます。
procedure Test;
...
w := p.frmOpts;
tvw := w.VCLObject('ElTree1');
tvw.Items.Item(1).Checked := true;
end;
デバッグ情報エージェントのヘルプ トピックで、TestComplete のデバッグ情報を使用して Delphi アプリケーションを正しくコンパイルする方法の詳細を確認してください。ご使用の Delphi のバージョンに対応するリンクをクリックして、手順を取得します。
また、このアンケートで、TestComplete の将来のバージョンでのコントロールの高度なサポートに投票できます。
アップデート:
TestComplete は、他の広範なツリー ビュー コントロールのようなTElTreeViewコントロールの拡張サポートを持っていませんが、高レベルでコントロールを操作するためのスクリプト ルーチンを作成することは可能です。これらのルーチンは、TestComplete の Open Application 機能を使用して、ネイティブ メソッドとプロパティを介してツリー コントロールを操作します。以下のサンプル スクリプトは、これを行う方法を示しています。
function getTreeNode(tree, nodeName); forward;
function clickTreeNode(tree, node); forward;
procedure test;
var
tree;
nodeName;
node;
begin
tree := Sys.Process('ElTreeTest').VCLObject('Form1').VCLObject('ElPanel1').VCLObject('ElTree1');
nodeName := 'Item B|Item BB|Item BBA';
node := getTreeNode(tree, nodeName);
if node <> nil then
Log.Message(node.Caption)
else
begin
Log.Error('Node "' + nodeName + '" not found');
Runner.Stop;
end;
node.MakeVisible;
node.Checked := not node.Checked;
clickTreeNode(tree, node);
end;
function clickTreeNode(tree, node);
var
x, y;
begin
node.MakeVisible;
x := (node.TextRect.Left + node.TextRect.Right) / 2;
y := (node.TextRect.Top + node.TextRect.Bottom) / 2;
tree.Click(x, y);
end;
function getTreeChildNode(rootNode, nodeName);
var
i;
item;
nodeCaption;
begin
result := nil;
if rootNode = nil then
exit;
nodeCaption := aqString.GetListItem(nodeName, 0);
for i := 0 to rootNode.ChildrenCount - 1 do
begin
item := rootNode.Children(i);
if item.Caption = nodeCaption then
begin
result := item;
break;
end;
end;
if aqString.GetListLength(nodeName) > 1 then
result := getTreeChildNode(result, aqString.DeleteListItem(nodeName, 0));
end;
function getTreeNode(tree, nodeName);
var
rootNodeCaption;
item;
i;
begin
aqString.ListSeparator := '|';
rootNodeCaption := aqString.GetListItem(nodeName, 0);
result := nil;
for i := 0 to tree.Items.Count - 1 do
begin
item := tree.Items.Item(i);
if item.Parent = nil then
begin
if item.Caption = rootNodeCaption then
begin
result := item;
break;
end;
end;
end;
if aqString.GetListLength(nodeName) > 1 then
result := getTreeChildNode(result, aqString.DeleteListItem(nodeName, 0));
end;