` Printed Icetips Article

Icetips Article



Par2: Autocomplete
2007-12-31 -- Sean Cameron
 
You can use one of the third party accessories available, or implement it 
yourself (which isn't too hard).

1) Use a Combo control

2) In Event:DroppingDown set a flag to indicate that the list has dropped, 
and populate the queue:
  droppedDown = 1
  Select(?Mail:ToList, 1)


3) In Event:NewSelection if the droppedDown flag is set or the keycode is 37 
or 39 (the left and right arrow keys) cycle out. This is to preserve the 
normal behaviour when the control is being edited like a normal entry 
control.  Otherwise populate the list with matching entries by looping 
through the file based on the key that contains the lookup field. You can 
use Instring() or the FuzzyMatch class to determine when to break out of the 
loop.

4) In Event:ScrollDown select the entry in the list:
  if (?Mail:ToList{prop:listfeq}){prop:selected} < Records(SuggestionQ)
      Select(?Mail:ToList{prop:listfeq}, 
(?Mail:ToList{prop:listfeq}){prop:selected} + 1)
  end

5) Similarly in Event:Scrolldown:
  if (?Mail:ToList{prop:listfeq}){prop:selected} > 1
      Select(?Mail:ToList{prop:listfeq}, 
(?Mail:ToList{prop:listfeq}){prop:selected} - 1)
  end

6) In Event:Accepted get the selected entry to populate into the field and 
set the flag back to zero:
  Get(SuggestionQ, 0+(?Mail:ToList{prop:listfeq}){prop:selected})
  ! Do any processing needed here, and assign the field from the queue
  Mail.ToList = Clip(SuggestionQ.description)
  droppedDown = 0


In the case above SuggestionQ contains all the "suggestions", the combo 
field is ?Mail:ToList and the field being filled is Mail:ToList. In my case 
it's a bit more complex as the field can contains multiple entries, 
seperated by commas or semi colons, and entries can contains names and email 
address or even combinations thereof. The bulk of the code in my case is 
processing the list, matching it up with a second queue that the individual 
addresses are parsed into, and building a new string to assign etc. It's a 
bit more complex when a any number of different strings can mean the same 
thing .



Printed May 2, 2024, 11:17 am
This article has been viewed/printed 35115 times.