clear all cSQL = "* from employee order by last_name" && Passed as a param cSQL = stuff(cSQL,atc(" from",cSQL),; 0,",.f. as lSelected,.f. as lLastSelected") select &cSQL into cursor myCursor use dbf("myCursor") in 0 again alias tcSelector use in "mycursor" select tcSelector oSelectorForm = createobject("Form") oSelectorForm.height = 400 oSelectorForm.width = 600 oSelectorForm.visible = .t. oSelectorForm.closable = .f. oSelectorForm.addobject("mygrid","grid") oSelectorForm.addobject("myQuit1","myQuit") with oSelectorForm.mygrid .recordmark = .f. .deletemark = .f. .recordsourcetype = 1 .recordsource = "tcSelector" .columncount=fcount("tcSelector")-2 for ix=1 to .columncount .columns(ix).removeobject("Text1") .columns(ix).addobject("myTextBox","myTxtBox") .columns(ix).currentcontrol = "myTextBox" endfor nBackColor = .columns(1).myTextBox.SelectedBackColor nForeColor = .columns(1).myTextBox.SelectedForeColor .setall("DynamicBackColor","iif(lSelected,"+str(nBackColor)+",rgb(255,255,255))","column") .setall("DynamicForeColor","iif(lSelected,"+str(nForeColor)+",rgb(0,0,0))","column") .left = 1 .top = oSelectorForm.myQuit1.top + oSelectorForm.myQuit1.height + 2 .width = .parent.width - 2 .height = .parent.height - .top - 2 .visible = .t. endwith oSelectorForm.myQuit1.visible = .t. oSelectorForm.show read events define class myquit as commandbutton left=1 top=1 Caption="Close" procedure click clear events endproc enddefine define class myTxtBox as TextBox BorderStyle = 0 procedure gotfocus this.backcolor = this.SelectedBackColor this.forecolor = this.SelectedForeColor endproc procedure lostfocus this.backcolor = rgb(255,255,255) this.forecolor = rgb(0,0,0) endproc procedure mousedown lparameters nButton, nShift, nXCoord, nYCoord thisform.lockscreen = .t. if nButton = 1 nodefault do case case nShift = 1 case nShift = 2 otherwise nCurrec = recno() replace all lSelected with .f., lLastSelected with .f. go nCurrec replace lSelected with .t., lLastSelected with .t. endcase endif thisform.lockscreen = .f. endproc enddefineCetin