Define Class form1 As Form Top = 3 Left = 48 Height = 100 Width = 375 DoCreate = .T. ShowTips = .T. Caption = "Auto Complete" Name = "Form1" Add Object command1 As CommandButton With ; Top = 67, ; Left = 278, ; Height = 27, ; Width = 84, ; Caption = "Close", ; TabIndex = 2, ; Name = "Command1" Add Object label1 As Label With ; AutoSize = .T., ; Caption = "Name", ; Height = 17, ; Left = 60, ; Top = 25, ; Width = 55, ; TabIndex = 3, ; Name = "Label1" Add Object text1 As TextBox With ; Format = "K", ; Height = 23, ; Left = 120, ; SelectOnEntry = .T., ; TabIndex = 1, ; Top = 20, ; Width = 207, ; Name = "Text1" Procedure Load If Used("customer") Use In customer Endif **** Do not need to do this if there is an Index Set Exclusive On ************************************************ Select 0 Use Home()+"samples\data\customer.dbf" ************************************************ Index On company Tag company Set Order To Tag company ************************************************ Endproc Procedure command1.Click Thisform.Release Endproc Procedure text1.InteractiveChange With This If (Lastkey() >= 32 And Lastkey() <= 127) .nIDSelStart = Icase(.nIDSelStart >= 0 And Lastkey() = 127,.nIDSelStart - 1,; .nIDSelStart < 0,0,; .nIDSelStart + 1) Select customer coldtag = Tag() Set Order To Tag company Locate For Substr(Alltrim(Upper(customer.company)),1,.nIDSelStart) = ; Upper(Substr(This.Value,1,.nIDSelStart)) ***** Could use a SEEK() as well If Found() This.Value = customer.company Else If !Empty(This.Value) .nIDSelStart = This.SelStart Else .nIDSelStart = 0 Endif Endif This.SelStart = .nIDSelStart Set Order To Tag (coldtag) Endif Endwith This.SelLength = Iif(!Empty(This.Value),(Len(Alltrim(This.Value))-(This.nIDSelStart)),1) Endproc Procedure text1.Init If !Pemstatus(This,"nIDSelStart",5) This.AddProperty("nIDSelStart",0) Endif Endproc Enddefine