Login
`
Templates, Tools and Utilities
|
||
Icetips Article
Back to article list
Search Articles
Add Comment
Printer friendly
Direct link
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
Today is November 21, 2024, 3:37 am This article has been viewed 35214 times.
|
|