Hello,
i want to test my application with Ranorex (capture and replay tool). Has somebody tested his tool with Ranorex? If yes, who do you select or analyse a for example a row or cell?
In code of iGrid I do not see that CreateAccessibilityInstance() was overwritten, this helps tools to analyse the control...
With best regards
GeCi
For example (!!!not tested, not refactored!!!):
sealed class FilterGridCellAccessibleObject : AccessibleObject
{
private readonly iGCell _cell;
private readonly FilterGridAccessibleObject _grid;
public FilterGridCellAccessibleObject(iGCell cell, FilterGridAccessibleObject grid)
{
_cell = cell;
_grid = grid;
}
public override AccessibleRole Role
{
get { return AccessibleRole.Cell; }
}
public override Rectangle Bounds
{
get
{
Point location = new Point(_grid.Bounds.X + _cell.Bounds.X, _grid.Bounds.Y + _cell.Bounds.Y);
return new Rectangle(location, new Size(_cell.Bounds.Width, _cell.Bounds.Height));
}
}
public override string Value
{
get { return _cell.Value.ToString(); }
set { throw new NotSupportedException("Set Value is not supported in FilterGridCellAccessibleObject."); }
}
}
sealed class FilterGridRowAccessibleObject : AccessibleObject
{
private readonly iGRow _row;
private readonly FilterGridAccessibleObject _grid;
private readonly Dictionary<iGCell, AccessibleObject> _cells;
public ARFilterGridRowAccessibleObject(iGRow row, FilterGridAccessibleObject grid)
{
_row = row;
_grid = grid;
_cells = new Dictionary<iGCell, AccessibleObject>();
}
public override AccessibleRole Role
{
get { return AccessibleRole.Row; }
}
public override int GetChildCount()
{
return _row.Cells.Count;
}
public override Rectangle Bounds
{
get
{
Point location = new Point(_grid.Bounds.X, _grid.Bounds.Y + _row.Y);
int width = _grid._grid.VScrollBar.Visible
? _grid._grid.ClientRectangle.Width - _grid._grid.VScrollBar.Width
: _grid._grid.ClientRectangle.Width;
return new Rectangle(location, new Size(width, _row.Height));
}
}
public override AccessibleObject GetChild(int index)
{
if (index >= 0 && index < _row.Cells.Count)
{
iGCell cell = _row.Cells[index];
AccessibleObject accessibleObject;
if (!_cells.TryGetValue(cell, out accessibleObject))
{
accessibleObject = new FilterGridCellAccessibleObject(cell, _grid);
_cells.Add(cell, accessibleObject);
}
return accessibleObject;
}
return null;
}
}
sealed class FilterGridAccessibleObject : Control.ControlAccessibleObject
{
internal readonly iGrid _grid;
private readonly Dictionary<iGRow, AccessibleObject> _rows;
public FilterGridAccessibleObject(iGrid control)
: base(control)
{
_grid = control;
_rows = new Dictionary<iGRow, AccessibleObject>();
}
public override AccessibleRole Role
{
get { return AccessibleRole.Table; }
}
public override int GetChildCount()
{
return _grid.Rows.Count;
}
public override Rectangle Bounds
{
get { return new Rectangle(_grid.Parent.PointToScreen(_grid.Bounds.Location), _grid.Bounds.Size); }
}
public override AccessibleObject GetChild(int index)
{
if (index >= 0 && index < _grid.Rows.Count)
{
iGRow row = _grid.Rows[index];
AccessibleObject accessibleObject;
if (!_rows.TryGetValue(row, out accessibleObject))
{
accessibleObject = new FilterGridRowAccessibleObject(row, this);
_rows.Add(row, accessibleObject);
}
return accessibleObject;
}
return null;
}
}
Edited by user
2015-06-08T10:45:54Z
|
Reason: Example added