When working with QuantumGrid controls, you may need to simulate the selection of several grid rows. This topic explains how to obtain values from the selected rows.
In order for TestComplete to be able to perform these actions, the following conditions must be met:
When testing Developer Express QuantumGrid controls, use specific methods and properties of the corresponding |
To obtain the selected rows, you can use the following internal methods of the TcxGrid object (TcxGrid is the class name of the QuantumGrid control):
-
ViewObj.DataController.GetSelectedCount
- Returns the number of selected rows. This is a method of the view object (QuantumGrid can display data in several levels. Each level has an associated view object. It specifies what data the level displays and how it displays them). -
ViewObj.DataController.GetSelectedRowIndex(SelectedIndex)
- Returns the index of the selected row in the grid by its index in the collection of the view’s selected rows.
Below is a sample code that demonstrates how you can use the internal methods of the QuantumGrid control to access selected rows.
Example
JavaScript
function Main ()
{
var p, Grid, RowIndexes, Idx;
// Obtain the grid object
p = Sys.Process("Project1");
Grid = p.VCLObject("Form1").VCLObject("cxGrid1");
// Select a range of rows
SelectRange (Grid, 2, 7);
// Get an array of selected rows' indexes
RowIndexes = GetSelectedRowIndexes (Grid, null);
// Iterate through the selected rows
for (let i = 0; i < RowIndexes.length; i++)
{
Idx = RowIndexes[i];
Log.Message (Idx + ": " + Grid.wValue (Idx, "Product Name"));
}
}
// Returns an array of selected rows' indexes
function GetSelectedRowIndexes (Grid, View)
{
// Obtain the view object
if (strictEqual(View, null))
View = Grid.ActiveView;
// Get the number of selected rows and create an array
let SelectedRows = new Array (View.DataController.GetSelectedCount());
// Iterate through selected rows
for (let i = 0; i < View.DataController.GetSelectedCount; i++)
// Save the selected row index to an array element
SelectedRows[i] = View.DataController.GetSelectedRowIndex(i);
// Return the array
return SelectedRows;
}
// Selects a range of rows
function SelectRange (Level, StartRowIndex, EndRowIndex, ViewId)
{
// If the View parameter is omitted, initialize it with the default value
if (isUndefined(ViewId))
ViewId = 0;
// Select the first row of the range
Level.ClickRowIndicator (StartRowIndex, ViewId);
// Extend the selection
Level.ClickRowIndicator (EndRowIndex, ViewId, skShift);
}
JScript
function Main ()
{
var p, Grid, RowIndexes, Idx, i;
// Obtain the grid object
p = Sys.Process("Project1");
Grid = p.VCLObject("Form1").VCLObject("cxGrid1");
// Select a range of rows
SelectRange (Grid, 2, 7);
// Get an array of selected rows' indexes
RowIndexes = GetSelectedRowIndexes (Grid, null);
// Iterate through the selected rows
for (i = 0; i < RowIndexes.length; i++)
{
Idx = RowIndexes[i];
Log.Message (Idx + ": " + Grid.wValue (Idx, "Product Name"));
}
}
// Returns an array of selected rows' indexes
function GetSelectedRowIndexes (Grid, View)
{
// Obtain the view object
if (View == null)
View = Grid.ActiveView;
// Get the number of selected rows and create an array
var SelectedRows = new Array (View.DataController.GetSelectedCount());
// Iterate through selected rows
for (var i = 0; i < View.DataController.GetSelectedCount; i++)
// Save the selected row index to an array element
SelectedRows[i] = View.DataController.GetSelectedRowIndex(i);
// Return the array
return SelectedRows;
}
// Selects a range of rows
function SelectRange (Level, StartRowIndex, EndRowIndex, ViewId)
{
// If the View parameter is omitted, initialize it with the default value
if (typeof (ViewId) == "undefined")
ViewId = 0;
// Select the first row of the range
Level.ClickRowIndicator (StartRowIndex, ViewId);
// Extend the selection
Level.ClickRowIndicator (EndRowIndex, ViewId, skShift);
}
Python
def Main ():
# Obtain the grid object
p = Sys.Process("Project1")
Grid = p.VCLObject("Form1").VCLObject("cxGrid1")
# Select a range of rows
SelectRange (Grid, 2, 7)
# Get an array of selected rows' indexes
RowIndexes = GetSelectedRowIndexes (Grid, None)
# Iterate through the selected rows
for i in range(0, RowIndexes.length-1):
Idx = RowIndexes[i]
Log.Message (Idx + ": " + Grid.wValue (Idx, "Product Name"))
# Returns an array of selected rows' indexes
def GetSelectedRowIndexes (Grid, View):
# Obtain the view object
if (View == None):
View = Grid.ActiveView
# Get the number of selected rows and create an array
SelectedRows = list(View.DataController.GetSelectedCount())
# Iterate through selected rows
for i in range(0, View.DataController.GetSelectedCount-1):
# Save the selected row index to an array element
SelectedRows[i] = View.DataController.GetSelectedRowIndex(i)
# Return the array
return SelectedRows
# Selects a range of rows
def SelectRange (Level, StartRowIndex, EndRowIndex, ViewId):
# If the View parameter is omitted, initialize it with the default value
if (typeof (ViewId) == "undefined"):
ViewId = 0
# Select the first row of the range
Level.ClickRowIndicator (StartRowIndex, ViewId)
# Extend the selection
Level.ClickRowIndicator (EndRowIndex, ViewId, skShift)
VBScript
Sub Main
Dim p, Grid, RowIndexes, Idx, i
' Obtain the grid object
Set p = Sys.Process("Project1")
Set Grid = p.VCLObject("Form1").VCLObject("cxGrid1")
' Select a range of rows
Call SelectRange (Grid, 2, 7, 0)
' Get an array of selected rows' indexes
RowIndexes = GetSelectedRowIndexes (Grid, Nothing)
' Iterate through the selected rows
For i = 0 To UBound(RowIndexes)
Idx = RowIndexes(i)
Log.Message (Idx & ": " & Grid.wValue (Idx, "Product Name"))
Next
End Sub
' Returns an array of selected rows' indexes
Function GetSelectedRowIndexes (Grid, View)
Dim SelectedRows, i
' Obtain the view object
If View Is Nothing Then
Set View = Grid.ActiveView
End If
' Get the number of selected rows and
' create an array
SelectedRows = CreateVariantArray (0, View.DataController.GetSelectedCount-1)
' Iterate through selected rows
For i = 0 To View.DataController.GetSelectedCount-1
' Save the selected row index to an array element
SelectedRows(i) = View.DataController.GetSelectedRowIndex(i)
Next
' Return the array
GetSelectedRowIndexes = SelectedRows
End Function
' Selects a range of rows
Sub SelectRange (Level, StartRowIndex, EndRowIndex, ViewId)
' Select the first row of the range
Call Level.ClickRowIndicator (StartRowIndex, ViewId)
' Extend the selection
Call Level.ClickRowIndicator (EndRowIndex, ViewId, skShift)
End Sub
DelphiScript
procedure SelectRange (Level, StartRowIndex, EndRowIndex, ViewId: OleVariant = 0); forward;
function GetSelectedRowIndexes (Grid, View); forward;
procedure Main;
var p, Grid, RowIndexes, Idx, i : OleVariant;
begin
// Obtain the grid object
p := Sys.Process('Project1');
Grid := p.VCLObject('Form1').VCLObject('cxGrid1');
// Select a range of rows
SelectRange (Grid, 2, 7);
// Get an array of selected rows' indexes
RowIndexes := GetSelectedRowIndexes (Grid, nil);
// Iterate through the selected rows
for i := 0 to VarArrayHighBound(RowIndexes) do
begin
Idx := RowIndexes[i];
Log.Message (aqConvert.VarToStr(Idx) + ': ' + aqConvert.VarToStr(Grid.wValue[Idx, 'Product Name']));
end
end;
// Returns an array of selected rows' indexes
function GetSelectedRowIndexes (Grid, View);
var SelectedRows, i : OleVariant;
begin
// Obtain the view object
if View = nil then
View := Grid.ActiveView;
// Get the number of selected rows and create an array
SelectedRows := CreateVariantArray (0, View.DataController.GetSelectedCount-1);
// Iterate through selected rows
for i := 0 to View.DataController.GetSelectedCount-1 do
// Save the selected row index to an array element
SelectedRows[i] := View.DataController.GetSelectedRowIndex(i);
// Return the array
Result := SelectedRows;
end;
// Selects a range of rows
procedure SelectRange (Level, StartRowIndex, EndRowIndex, ViewId: OleVariant = 0);
begin
// Select the first row of the range
Level.ClickRowIndicator (StartRowIndex, ViewId);
// Extend the selection
Level.ClickRowIndicator (EndRowIndex, ViewId, skShift);
end;
C++Script, C#Script
function Main ()
{
var p, Grid, RowIndexes, Idx, i;
// Obtain the grid object
p = Sys["Process"]("Project1");
Grid = p["VCLObject"]("Form1")["VCLObject"]("cxGrid1");
// Select a range of rows
SelectRange (Grid, 2, 7);
// Get an array of selected rows' indexes
RowIndexes = GetSelectedRowIndexes (Grid, null);
// Iterate through the selected rows
for (i = 0; i < RowIndexes["length"]; i++)
{
Idx = RowIndexes[i];
Log["Message"](Idx + ": " + Grid["wValue"](Idx, "Product Name"));
}
}
// Returns an array of selected rows' indexes
function GetSelectedRowIndexes (Grid, View)
{
// Obtain the view object
if (View == null)
View = Grid["ActiveView"];
// Get the number of selected rows and create an array
var SelectedRows = new Array (View["DataController"]["GetSelectedCount"]());
// Iterate through selected rows
for (var i = 0; i < View["DataController"]["GetSelectedCount"]; i++)
// Save the selected row index to an array element
SelectedRows[i] = View["DataController"]["GetSelectedRowIndex"](i);
// Return the array
return SelectedRows;
}
// Selects a range of rows
function SelectRange (Level, StartRowIndex, EndRowIndex, ViewId)
{
// If the View parameter is omitted, initialize it with the default value
if (typeof (ViewId) == "undefined")
ViewId = 0;
// Select the first row of the range
Level["ClickRowIndicator"](StartRowIndex, ViewId);
// Extend the selection
Level["ClickRowIndicator"](EndRowIndex, ViewId, skShift);
}
See Also
Working With Developer Express QuantumGrid
Selecting Multiple Rows in Developer Express QuantumGrid
Obtaining and Setting Cell Values in Developer Express QuantumGrid