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, ColumnName, Idx;
  // Obtain the grid object
  p = Sys.Process("MySampleApp");
  Grid = p.VCLObject("FormName").VCLObject("GridName");
  // 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
  ColumnName = "MyColumn";
  for (let i = 0; i < RowIndexes.length; i++)
  {
    Idx = RowIndexes[i];
    Log.Message (Idx + ": " + Grid.wValue (Idx, ColumnName));
  }
					}
// 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, ColumnName, i;
  // Obtain the grid object
  p = Sys.Process("MySampleApp");
  Grid = p.VCLObject("FormName").VCLObject("GridName");
  // 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
  ColumnName = "MyColumn";
  for (i = 0; i < RowIndexes.length; i++)
  {
    Idx = RowIndexes[i];
    Log.Message (Idx + ": " + Grid.wValue (Idx, ColumnName));
  }
					}
// 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("MySampleApp")
  Grid = p.VCLObject("FormName").VCLObject("GridName")
  # 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
  ColumnName = "MyColumn"
  for i in range(0, RowIndexes.length-1):
    Idx = RowIndexes[i]
    Log.Message (Idx + ": " + Grid.wValue (Idx, ColumnName))
# 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, ColumnName, Idx, i
  ' Obtain the grid object
  Set p = Sys.Process("MySampleApp")
  Set Grid = p.VCLObject("FormName").VCLObject("GridName")
  ' 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
  ColumnName = "MyColumn"
  For i = 0 To UBound(RowIndexes)
    Idx = RowIndexes(i)
    Log.Message (Idx & ": " & Grid.wValue (Idx, ColumnName))
  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 Main;
var p, Grid, RowIndexes, ColumnName, Idx, i : OleVariant;
begin
  // Obtain the grid object
  p := Sys.Process('MySampleApp');
  Grid := p.VCLObject('FormName').VCLObject('GridName');
  // 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
  ColumnName := 'MyColumn';
  for i := 0 to VarArrayHighBound(RowIndexes) do
  begin
    Idx := RowIndexes[i];
    Log.Message (aqConvert.VarToStr(Idx) + ': ' + aqConvert.VarToStr(Grid.wValue[Idx, ColumnName]));
  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, ColumnName, Idx, i;
  // Obtain the grid object
  p = Sys["Process"]("MySampleApp");
  Grid = p["VCLObject"]("FormName")["VCLObject"]("GridName");
  // 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
  ColumnName = "MyColumn";
  for (i = 0; i < RowIndexes["length"]; i++)
  {
    Idx = RowIndexes[i];
    Log["Message"](Idx + ": " + Grid["wValue"](Idx, ColumnName));
  }
					}
// 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

 View description
View description