Skip to content

ComboFindItem - cCJGridColumn

Returns a combo match for the passed value starting at the passed start position

Type: Function
Return Data Type: Integer

Parameters

Parameter Type Description
iStartAt Integer The position to start the search (0-based and should be 0 to start at the beginning)
sCaption String The text to search for in the combo list

Syntax

Function ComboFindItem Integer iStartAt String sCaption Returns Integer

Call Example

Get ComboFindItem iStartAt sCaption to IntegerVariable

Description

ComboFindItem searches the items in the combo for a match of sCaption starting the search at index position iStartAt.

The search is case-sensitive.

If a match is found, the index position within ComboData is returned.

Sample

Object oDBColumnTypeColumn is a cCJGridColumn 
    Set psCaption to "Type"
    Set piWidth to 59
    Set pbComboButton to True
    Set pbComboEntryState to False

    Send ComboAddItem "Int" 0
    Send ComboAddItem "Char" 2
    Send ComboAddItem "DateTime" 3
    Send ComboAddItem "Number" 4
    Send ComboAddItem "Binary" 5
    Send ComboAddItem "Overlap" 6
    Send ComboAddItem "Text" 7
End_Object

// Somewhere else in the dialog containing a grid with this column
Procedure OnClick
    Integer eType

    Get ComboFindItem of oDBColumnTypeColumn 0 "Number" to eType
End_Procedure

Sample

A number of items could be retrieved via ComboData as in:

tComboItem[] MyComboValues
Get ComboData to MyComboValues
Move (SizeOfArray (MyComboValues) - 1) to iEnd

:

Function OnValidating Returns Boolean
    Boolean bError
    String sType
    Integer iElement

    Forward Get OnValidating to bError
    If (not (bError)) Begin
        Get SelectedRowValue to sType
        Get ComboFindItem 0 sType to iElement
        Move (iElement = -1) to bError
    End

    Function_Return bError
End_Function

Sample

For a case-insensitive search, you could do the following:

Function OnValidating Returns Boolean
    Boolean bError bFound
    String sType
    tComboItemData[] tColumnTypes
    Integer iElements

    Forward Get OnValidating to bError
    If (not (bError)) Begin
        Get SelectedRowValue to sType
        Move (Lowercase (sType)) to sType
        Get ComboData to tColumnTypes
        Move (SizeOfArray (tColumnTypes)) to iElements
        Move False to bFound
        While (iElements > 0 and (not (bFound)))
            Decrement iElements
            If (Lowercase (tColumnTypes[iElements].sCaption) = sType) Begin
                Move True to bFound
            End
        Loop
        Move (not (bFound)) to bError
    End

    Function_Return bError
End_Function

Return Value

If a match is found, returns index of the match, else -1. If iStartAt is higher than the current number of items in the list, returns -1.