CREATE CURSOR ppmfil (Code C(10), description C(50) ,text1 C(50), FileId C(10), Value1 N(3)) FOR asd =1 TO 20 insert INTO ppmfil VALUES (TRANSFORM(ASD), "dESC "+TRANSFORM(ASD),"Text "+TRANSFORM(ASD),"",asd) NEXT INDEX ON Code TAG ppmfil oForm = CREATEOBJECT("Form") oForm.AddObject("myCombo1","myCombo") oForm.myCombo1.Left = 10 oForm.myCombo1.Top = 10 oForm.myCombo1.Width = 300 oForm.myCombo1.Visible = .t. oForm.AddObject("Grid1","Grid") oForm.Grid1.Top = 30 oForm.Grid1.Left = 10 oForm.Grid1.Width =300 oForm.Grid1.Visible = .t. oForm.Grid1.Column2.AddObject("MyCombo1","MyCombo") oForm.Grid1.Column2.RemoveObject("Text1") oForm.Grid1.Column2.MyCombo1.Visible = .t. oForm.Grid1.Column2.CurrentControl = "MyCombo1" oForm.Grid1.Column2.Sparse = .t. oForm.Show(1) DEFINE CLASS myCombo AS ComboBox mFilter = "" MasterfileId = "" nCodeColumn = 1 nDesColumn = 2 lCodeAtFront = .t. AllowUnknown = .t. lUseText=.F. AllowNewItem = .t. Codewidth = 20 DIMENSION aItems[1,3] RowSourceType = 6 RowSource = "ppmfil.Code, Value1" PROCEDURE LoadCombo() LOCAL lnselect,lnk lnselect=SELECT() lnk=0 IF THIS.lCodeAtFront THIS.BOUNDCOLUMN=1 IF THIS.Parent.Class<>"Column" THIS.COLUMNWIDTHS=ALLTRIM(STR(THIS.WIDTH-12))+",150" ENDIF THIS.nCodeColumn=1 THIS.nDesColumn=2 ENDIF DIMENSION THIS.aItems[1,3] THIS.aItems[1,THIS.nCodeColumn]=SPACE(THIS.Codewidth) THIS.aItems[1,THIS.nDesColumn]="Unknown" THIS.aItems[1,3]=999 IF THIS.AllowUnknown lnk=lnk+1 ENDIF IF RIGHT(THIS.MasterfileId,THIS.nCodeColumn)="*" THIS.MasterfileId=STRTRAN(THIS.MasterfileId,"*","") THIS.lUseText=.T. ELSE THIS.lUseText=.F. ENDIF SELECT ppmfil IF !ISBLANK(THIS.mFilter) lcFilter="SET FILTER TO "+THIS.mFilter &lcFilter ENDIF LOCATE IF SEEK(THIS.MasterfileId) SCAN FOR !ISBLANK(code) WHILE FileId=THIS.MasterfileId lnk=lnk+1 DIMENSION THIS.aItems[lnk,3] THIS.aItems[lnk,THIS.nCodeColumn]=Left(code,THIS.CodeWidth) THIS.aItems[lnk,THIS.nDesColumn] =IIF(!THIS.lUseText,description,text1) THIS.aItems[lnk,3] =value1 ENDSCAN ENDIF ***USE =ASORT(THIS.aItems,THIS.nCodeColumn) IF THIS.AllowNewItem lnk=lnk+1 DIMENSION THIS.aItems[lnk,3] THIS.aItems[lnk,THIS.nCodeColumn]=REPLICATE("+",THIS.Codewidth) THIS.aItems[lnk,THIS.nDesColumn]="New Item" THIS.aItems[lnk,3]=998 ENDIF SELECT (lnselect) =ASORT(THIS.aItems,3) *) This is where I have tried to set the combo to top IF EMPTY(THIS.Value) THIS.ListIndex=1 ENDIF ** ONLY row numbers not whole array THIS.NUMBEROFELEMENTS=ALEN(THIS.aItems,1) ENDPROC PROCEDURE Init() this.LoadCombo() ENDPROC ENDDEFINE