nColIndex = ... && index of the column for control nColumnPos = ... && calculate the column position. && do this in a loop through all .columns() collection && using .ColumnCount, .LeftColumn, .column.ColumnOrder, .column.Visible, && and .colmn.Width properties. && Thats if you want the generic aproach. For a single use do this just manually ;) nRelRow = this.RelativeRow && assume you show edit box only when grid is focused nRelRow = this.RelativeRow && Need to do this twise for correct result thisform.EditingBox.Move(; ObjToClient(this,2) + ; iif(this.RecordMark,10,0)+ ; iif(this.DeleteMark,8,0)+nColumnPos, ; ObjToClient(this,1)+this.HeaderHeight+1+(this.RowHeight)*nRelRow, ; this.Columns(nColIndex).Width, ; this.RowHeight-1 ) && -1 because 1 point is reserved for grid lines. thisform.EditingBox.Refresh thisform.EditingBox.Visible = .T.- To refresh controls correctly, reposition the box in the Scrolled event and certain other events (see next paragraph). In above positioning algorithm, check if nColumnPos with all other things do not go out of grid. Note that left column is not cut by the grid edge, when right column is cut. You can sho box partially as grid does. To calculate left edge of visible area, use sysmetric() function to get the width of the vertical scrollbar (it is sysmetric(5) if I remember correctly).