`
Par2: Auto-complete a field 1999-03-23 -- Jim Gambon Try this out: 1) You will need a local variable called "FieldPosition" to store where you are in the entry field. 2) Make sure the "Immediate" attribute is switched on for the entry field. This is so your program receives a "NewSelection" message for every keystroke. 3) Here's the tricky part (and cries out for a template I have not had the chance/time to write): Note: In this example I have used an Entry field named "Glo:LoginName", a Database file named "Users", a UserName Key named "USE:KeyUserName", and a UserName field in the database named "USE:UserName". You should be able to change this code for your own use. In the NewSelection Event handler for the Field Control ! Test for Valid Data Entry Keys Only. IF (KEYCODE() >= AKey AND KEYCODE() <= SlashKey) | OR (KEYCODE() >= Shift0 AND KEYCODE() <= ShiftZ) ! Get the data from the Screen UPDATE(?Glo:LoginName) ! Find out where we are in the Field FieldPosition = ?glo:LoginName{PROP:SelStart} ! If The Field is not blank IF LEN(glo:LoginName) > 0 ! Clear the Key and Lookup the User ! If a User is Found in the database, ! and it matches the data Entry, ! Fill the field with the new data. ACCESS:Users.ClearKey(USE:KeyUserName) USE:UserName = UPPER(glo:LoginName) SET(USE:KeyUserName,USE:KeyUserName) IF ACCESS:Users.Next() = Level:Benign IF CLIP(UPPER(glo:LoginName)) = UPPER(USE:UserName[1 : LEN(CLIP(glo:LoginName))]) glo:LoginName = USE:UserName DISPLAY(?Glo:LoginName) ! Next: select the entry field, but ! position the highlights to the part of the ! Field that we "guessed" at. SELECT(?glo:LoginName,FieldPosition, | FieldPosition+LEN(CLIPUse:UserName))) END !IF END !IF END !IF END !IF I hope this helps out. I hope I haven't forgotten anything in the code. Printed November 21, 2024, 6:44 am This article has been viewed/printed 35197 times. |