OnFindSuggestions - cDbCJGridColumnSuggestion
Event called to fill a suggestion list. This is called each time the contents of the list needs to change
Type: Event
Parameters
| Parameter | Type | Description |
|---|---|---|
| sSearch | String | The current search value, sSearch (which is whatever the user has currently typed) |
| ByRef aSuggestions | tSuggestion[] | Returns a tSuggestion struct array, where each item in the array represents a line in the suggestion list] |
Syntax
Procedure OnFindSuggestions String sSearch ByRef tSuggestion[] aSuggestions
Description
OnFindSuggestions is called in response to the user changing the search target. Each time the user types in a character, the suggestion list needs to change. This is handled by calling OnFindSuggestions.
Normally, the process of filling this list is automatic and you do not want to change it. When peSuggestionMode is smFind or smValidationTable, you will probably not want to augment this event.
When peSuggestionMode is smCustom, you will need to augment this event to provide a list of suggestions. See peSuggestionMode for more information about changing this event as well as the OnSelectSuggestion event, which you will also need to augment.
Sample
This sample shows how to change the Customer Name dbForm object (in the Customer.vw in the Order Entry Sample workspace) to a dbSuggestionForm and customize OnFindSuggestions to search both the Customer_Number and Name columns in the Customer table when the user types into the form.
The sample is a bit contrived, since Customer.Customer_Number is a numeric column and thus only allows numeric data. But if you type a 2 into the sample after making this change, it will find all Customer records where either the name or number contain a 2.
Use dbSuggestionForm.pkg
Object oCustomer_Name is a dbSuggestionForm
Entry_Item Customer.Name
Set Label to "Name:"
Set Size to 13 186
Set Location to 20 72
Set peAnchors to anTopLeftRight
Set Label_Col_Offset to 2
Set Label_Justification_Mode to jMode_Right
Set piFindIndex to 2
Set piStartAtChar to 1
Procedure OnFindSuggestions String sSearch tSuggestion[] ByRef aSuggestions
Integer i
Move (SizeOfArray(aSuggestions)) to i
Clear Customer
Repeat
Find gt Customer by 2 // Name Customer_Number
If (Found) Begin
If (Customer.Customer_Number contains sSearch or lowercase(Customer.Name) contains Lowercase(sSearch)) Begin
// return the rowid
Move (trim(Customer.Customer_Number)) to aSuggestions[i].sRowId
// add both customer number and name to the list of suggestions that are shown to the user
Move (trim(Customer.Customer_Number)) to aSuggestions[i].aValues[0]
Move (trim(Customer.Name)) to aSuggestions[i].aValues[1]
Increment i
If (i >= piMaxResults(Self)) Move False to Found // stop at piMaxResults
End
End
Until not (Found)
End_Procedure
End_Object