* Grid.Init && add a property to the grid to track the highlighting row this.AddProperty("nGridRecNo") this.nGridRecNo = 0 this.DeleteMark = .F. this.RecordMark = .F. this.HighLightRow = .F. * this.SplitBar=.F. && Set up this in design time, cannot change this in run-time. this.ScrollBars = 3 && or 2 if all columns fit into the visible area && if you have no horizontal scrollbar, last grid column windth should be 1 point less than && required to fit last column into the visible portion of grid (1 point gap between the right && edge of the last column and the left edge of the scrollbar). This to avoid grid ato-scroling && (jumping) when cell in the last column selected this.GridLines = 2 && vertical setupcolumn(Grid.Column1) setupcolumn(Grid.Column2) * Grid AftreRowColChange event code if this.nGridRecNo<>recno(this.RecordSource) this.nGridRecNo = recno(this.RecordSource) this.Refresh endif procedure SetupColumn && make it as a form or grid class method lparameters poColumn && assuming default textbox is in the grid lnColor = RGB(200,200,200) && or whatever color you want for row highlighting with poColumn .Movable = .F. .Resizable = .F. .ReadOnly = .T. .DynamicBackColor = "iif(recno('" + .parent.RecordSource + "')=this.nGridRecNo," + ; allt(str(lnColor))+ "," + allt(str(.BackColor)) + ")" .Text1.DisabledBackColor = lnColor .Text1.BackColor = lnColor .Text1.DisabledForeColor = .Text1.ForeColor .Text1.ReadOnly = .T. .Text1.Margin = 1 && require so no jumping when selecting cell endwithNow, you can see the gray line under each selected cell selected row color is another than gray. It is shown watever under the grid (usually form). Put a shape (or shapes) under the grid and make its background color the same as the color of the row highlighting.