I've tried to reproduce problem and used following class (copy of your code, but in c# and some tricks(see the OnMouseClick method)):
[C#]
public class ExtGrid : FlyGrid
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
int lastRow = Rows.Items.Count -1;
int row = Selected.Index;
int col = Columns.CurrentColumn;
if(keyData == Keys.Down || keyData == Keys.Return)
{
if (row < lastRow)
row++;
else
row = 0;
}
else if (keyData == Keys.Up)
{
if (row > 0)
row--;
else
row = lastRow;
}
else
{
return base.ProcessCmdKey (ref msg, keyData);
}
ActivePort.EndEdit(true);
ActivePort.BeginEdit(row, col);
return true;
}
//this method uses a little trick to call SelectAll on internal editor.
protected override bool OnMouseClick(FlyGridViewPort port, NodeBase node, int col, int x, int y, int count, System.Windows.Forms.MouseButtons button)
{
bool res = base.OnMouseClick (port, node, col, x, y, count, button);
if (res)
{
TextBox editor = (this as IServiceProvider).GetService(typeof(NineRays.Windows.Forms.Grids.IEditSelectionService)) as TextBox;
if (editor != null && editor.Visible)
{
editor.SelectAll();
}
}
return res;
}
}
And this code meets all your requirements (without using SetupEditor in columns), BeginEdit works correctly - shows editor and selects contents.
I've tried on the latest v1.4.0.6 version.