PUBLIC oform1 oform1=NEWOBJECT("form1") oform1.Show RETURN DEFINE CLASS form1 AS form DoCreate = .T. Caption = "Autocomplete Lookup" Name = "Form1" ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 46, ; Top = 46, ; Width = 278, ; Format = 'F',; AutoCompSource = PADR("GROUP1",20), ; AutoCompTable = "LookupTable", ; Name = "Text1" ADD OBJECT command1 AS commandbutton WITH ; Top = 8, ; Left = 50, ; Height = 27, ; Width = 84, ; Caption = "Command1", ; Name = "Command1" PROCEDURE Load CREATE TABLE LookupTable FREE; && you cannot to use a Cursor ( Source C(20) NOT NULL ; && Lookup Group , Data V(50) NOT NULL ; && Data item to display. , PK I ; ) INSERT INTO LookupTable VALUES ('GROUP1','First' ,1) INSERT INTO LookupTable VALUES ('GROUP1','Second' ,2) INDEX ON UPPER(Source+Data) FOR NOT DELETED() TAG DATA && non funziona senza l'indice USE && share ENDPROC PROCEDURE text1.GotFocus this.AutoComplete = 1 && Enable Lookup ENDPROC PROCEDURE text1.Valid SELECT 0 USE (M.THIS.AutoCompTable) AGAIN * ANOTHER * SELECT PK FROM ALIAS() WHERE UPPER(Source+Data) LIKE UPPER(PADR(M.THIS.AutoCompSource,20)+m.this.Value)+'%' INTO ARRAY aPK * IF EMPTY(_TALLY) IF NOT SEEK(UPPER(M.THIS.AutoCompSource+m.this.Value),SELECT(0),'DATA') USE MESSAGEBOX("INVALID ITEM") RETURN .F. ENDIF * OK this.AutoComplete = 0 && DISABLE MESSAGEBOX("SELECTED A VALID ITEM. PRIMARY KEY IS"+STR(pk)) USE ENDPROC ENDDEFINEDon't hesitate, and ask me explanations in the case this is you useful.