One of the actions that you will perform the most over a grid is selecting cells. This topic describes several approaches that can be used to select a particular cell in the UltraGrid control:
To perform these actions, TestComplete should have access to internal objects, properties and methods of the UltraGrid control. For this purpose, the .NET Application Support plugin must be installed and enabled. When testing Infragistics UltraGrid controls, use specific methods and properties of the corresponding |
Simulating Clicks on Cells
To simulate clicks and double-clicks on the grid cells the InfragisticsUltraGrid
and InfragisticsUltraGridView
objects have multiple Click
actions. The actions of the InfragisticsUltraGrid
object apply to the cells of the main data view, whereas the InfragisticsUltraGridView
actions affect the cells of the assosiated child data view.
ClickCell
andClickCellR
actions simulate a single click performed with the left or right mouse button respectively.ClickCellXY
andClickCellRXY
actions simulate a single click of a left or right mouse button that was performed at specific coordinates.DblClickCell
andDblClickCellR
actions simulate a double click performed with the left or right mouse button.DblClickCellXY
andDblClickCellRXY
actions simulate a double click of a left or right mouse button that was performed at specific coordinates.
All of these actions have parameters that specify the row index and the column’s caption or index. They also have an additional parameter that specifies the key or a combination of keys (CTRL, ALT, SHIFT) that are pressed during the simulation of a click.
Note: | UltraGrid cells can have several actions associated with a mouse click. The current action is set by the column’s native property CellClickAction . For example, if this property is set to Edit , then the cell is selected and its in-place editor is automatically activated. |
The code below demonstrates how to select a cell using a single mouse click inside the cell’s bounds. This example utilizes the grid from the “Fixed Headers” form of the “Samples Explorer” demo application that is provided with Infragistics UltraGrid. It selects a cell from the “FirstName” column of the sixth row that belongs to the main data view.
JavaScript, JScript
function Main1 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys.Process("SamplesExplorer");
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
// Simulate a click on a cell
Grid.ClickCell(RowIdx, ColumnName);
}
Python
def Main1 ():
# Obtain the grid object
p = Sys.Process("SamplesExplorer")
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
# Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 # Note that index is zero-based
# Simulate a click on a cell
Grid.ClickCell(RowIdx, ColumnName)
VBScript
Sub Main1
Dim p, Grid, Cell, ColumnName, RowIdx
' Obtain the grid object
Set p = Sys.Process("SamplesExplorer")
Set Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
' Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 ' Note that index is zero-based
' Simulate a click on a cell
Call Grid.ClickCell(RowIdx, ColumnName)
End Sub
DelphiScript
procedure Main1;
var p, Grid, Cell, ColumnName, RowIdx : OleVariant;
begin
// Obtain the grid object
p := Sys.Process('SamplesExplorer');
Grid := p.WinFormsObject('frmFixedHeaders').WinFormsObject('UltraGrid1');
ColumnName := 'FirstName';
RowIdx := 5; // Note that index is zero-based
// Simulate a click on a cell
Grid.Click(RowIdx, ColumnName);
end;
C++Script, C#Script
function Main1 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys["Process"]("SamplesExplorer");
Grid = p["WinFormsObject"]("frmFixedHeaders")["WinFormsObject"]("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
// Simulate a click on a cell
Grid["ClickCell"](RowIdx, ColumnName);
}
Using the Native Methods and Properties of a UltraGridCell Object
It is possible to select a particular cell using the native methods and properties of a UltraGridCell
object. To get an object that corresponds to the desired cell you can use the GetCell
routine. This routine returns an object that corresponds to the grid cell specified by the row index and the column index or name. You can find the code for this routine in the Accessing Grid Elements in Infragistics UltraGrid topic.
To select a retrieved cell, you can either call the UltraGridCell.Activate
method or assign True
to a cell’s Boolean property - UltraGridCell.Activated
.
The code below selects a cell via the native properties and methods of the UltraGridCell
object. It uses the same grid, form and application as in the first example and selects the same cell.
JavaScript
function Main2 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys.Process("SamplesExplorer");
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (strictEqual(Cell, null))
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
{
// 1: Using the cell's Activate method
Cell.Activate();
// 2: Using the cell's Activated property
//Cell.Activated = true;
}
}
JScript
function Main2 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys.Process("SamplesExplorer");
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (Cell == null)
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
{
// 1: Using the cell's Activate method
Cell.Activate();
// 2: Using the cell's Activated property
//Cell.Activated = true;
}
}
Python
def Main2 ():
# Obtain the grid object
p = Sys.Process("SamplesExplorer")
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
# Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 # Note that index is zero-based
Cell = GetCell (Grid, None, RowIdx, ColumnName)
if (Cell == None):
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else:
# 1: Using the cell's Activate method
Cell.Activate()
# 2: Using the cell's Activated property
#Cell.Activated = True
VBScript
Sub Main2
Dim p, Grid, Cell, ColumnName, RowIdx
' Obtain the grid object
Set p = Sys.Process("SamplesExplorer")
Set Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
' Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 ' Note that index is zero-based
Set Cell = GetCell (Grid, Nothing, RowIdx, ColumnName)
If Cell Is Nothing Then
Log.Error ("Cell (" & CStr(RowIdx) & ", " & ColumnName & ") was not found.")
Else
' 1: Using the cell's Activate method
Cell.Activate
' 2: Using the cell's Activated property
'Cell.Activated = True
End If
End Sub
DelphiScript
procedure Main2;
var p, Grid, Cell, ColumnName, RowIdx : OleVariant;
begin
// Obtain the grid object
p := Sys.Process('SamplesExplorer');
Grid := p.WinFormsObject('frmFixedHeaders').WinFormsObject('UltraGrid1');
ColumnName := 'FirstName';
RowIdx := 5; // Note that index is zero-based
Cell := GetCell(Grid, nil, RowIdx, ColumnName);
if Cell = nil then
Log.Error ('Cell (' + aqConvert.IntToStr(RowIdx) + ', ' + ColumnName + ') was not found.')
else
begin
// 1: Using the cell's Activate method
Cell.Activate;
// 2: Using the cell's Activated property
//Cell.Activated := true;
end
end;
C++Script, C#Script
function Main2 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys["Process"]("SamplesExplorer");
Grid = p["WinFormsObject"]("frmFixedHeaders")["WinFormsObject"]("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (Cell == null)
Log["Error"]("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
{
// 1: Using the cell's Activate method
Cell["Activate"]();
// 2: Using the cell's Activated property
//Cell["Activated"] = true;
}
}
Using the UltraGrid.ActiveCell
Property
Another way to select a cell is to use the native properties of the UltraGrid control. The UltraGrid
object has the UltraGrid.ActiveCell
native property that allows you to determine or specify the cell focused in the grid. This property accepts and returns the UltraGridCell
object. To obtain an UltraGridCell
instance that represents a desired grid cell use the GetCell
routine.
The following code demonstrates how to use the UltraGrid.ActiveCell
property to select a grid cell.
JavaScript
function Main3 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys.Process("SamplesExplorer");
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (strictEqual(Cell, null))
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
Grid.ActiveCell = Cell;
}
JScript
function Main3 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys.Process("SamplesExplorer");
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (Cell == null)
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
Grid.ActiveCell = Cell;
}
Python
def Main3 ():
# Obtain the grid object
p = Sys.Process("SamplesExplorer")
Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
# Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 # Note that index is zero-based
Cell = GetCell (Grid, None, RowIdx, ColumnName)
if (Cell == None):
Log.Error ("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else:
Grid.ActiveCell = Cell
VBScript
Sub Main3
Dim p, Grid, Cell, ColumnName, RowIdx
' Obtain the grid object
Set p = Sys.Process("SamplesExplorer")
Set Grid = p.WinFormsObject("frmFixedHeaders").WinFormsObject("UltraGrid1")
' Obtain and select the cell
ColumnName = "FirstName"
RowIdx = 5 ' Note that index is zero-based
Set Cell = GetCell (Grid, Nothing, RowIdx, ColumnName)
If Cell Is Nothing Then
Log.Error ("Cell (" & CStr(RowIdx) & ", " & ColumnName & ") was not found.")
Else
Set Grid.ActiveCell = Cell
End If
End Sub
DelphiScript
procedure Main3;
var p, Grid, Cell, ColumnName, RowIdx : OleVariant;
begin
// Obtain the grid object
p := Sys.Process('SamplesExplorer');
Grid := p.WinFormsObject('frmFixedHeaders').WinFormsObject('UltraGrid1');
ColumnName := 'FirstName';
RowIdx := 5; // Note that index is zero-based
Cell := GetCell(Grid, nil, RowIdx, ColumnName);
if Cell = nil then
Log.Error ('Cell (' + aqConvert.IntToStr(RowIdx) + ', ' + ColumnName + ') was not found.')
else
Grid.ActiveCell := Cell;
end;
C++Script, C#Script
function Main3 ()
{
var p, Grid, Cell, ColumnName, RowIdx;
// Obtain the grid object
p = Sys["Process"]("SamplesExplorer");
Grid = p["WinFormsObject"]("frmFixedHeaders")["WinFormsObject"]("UltraGrid1");
// Obtain and select the cell
ColumnName = "FirstName";
RowIdx = 5; // Note that index is zero-based
Cell = GetCell (Grid, null, RowIdx, ColumnName);
if (Cell == null)
Log["Error"]("Cell (" + RowIdx + ", " + ColumnName + ") was not found.")
else
Grid["ActiveCell"] = Cell;
}
See Also
Working With Infragistics UltraGrid
Accessing Grid Elements in Infragistics UltraGrid
Working With Specific In-place Editors in Infragistics UltraGrid
Obtaining and Setting Cell Values in Infragistics UltraGrid
Copying and Pasting Cell Values in Infragistics UltraGrid
Selecting Multiple Rows in Infragistics UltraGrid
ClickCell Action (Grid Controls)
ClickCellR Action (Grid Controls)