*mytest.prg DEFINE class myGrid as grid DeleteMark = .F. ReadOnly = .T. RecordMark = .F. ScrollBars = 2 Name = "grdMyGrid" PROCEDURE addcolumn LPARAMETERS nIndex, cAlias, cField NODEFAULT this.addobject("clm"+cField,"myColumn", cAlias+"."+cField,nIndex) ENDPROC PROCEDURE init LPARAMETERS tcRecordsource WITH this .Columncount = -1 .recordsource = tcRecordsource nOldColCount = .columncount FOR ix = 1 to fcount(tcRecordsource) .AddColumn(ix, tcRecordsource,field(ix,tcRecordsource)) ENDFOR FOR ix = nOldColCount to 1 step -1 .RemoveObject(.Columns(ix).name) ENDFOR ENDWITH ENDPROC ENDDEFINE DEFINE class myColumn as column Resizable = .F. Movable = .F. PROCEDURE init LPARAMETERS cControlSource, nIndex WITH this .controlsource = cControlSource .ColumnOrder = nIndex .RemoveObject('Header1') .Addobject('myHeader','myHeader') .AddObject("myText","myGridTxtBox") .CurrentControl = "myText" .Sparse = .F. ENDWITH ENDPROC PROCEDURE MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord WITH this.Parent lnActiveRow = ceiling( ; ( nYCoord - (.top + .headerheight) ) / .rowheight ) .ActivateCell(lnActiveRow,3) ENDWITH this.setfocus() this.myText.Tooltiptext = iif(type(this.controlsource)='C',this.myText.Value,'') ENDPROC ENDDEFINE DEFINE class myGridTxtBox as TextBox BackColor = rgb(0,0,255) ForeColor = rgb(255,255,255) SelectedBackColor = rgb(255,0,0) SelectedForeColor = rgb(255,255,0) Name = "Text1" PROCEDURE init this.BorderStyle = 0 ENDPROC PROCEDURE click this.setfocus() ENDPROC ENDDEFINE DEFINE class myHeader as Header BackColor = 0 ForeColor = rgb(255,255,0) PROCEDURE init this.Caption = this.parent.controlsource ENDPROC ENDDEFINECetin