下面就是Locate的方法原型:
function Locate(const KeyFields: String; const KeyValues: Variant;
Options: TLocateOptions): Boolean;
Locate方法接受三个参数。第一个参数KeyFields是开发人员要查寻的字段名称。如果开发人员要查寻单一字段,那么只需要直接传入此字段名称。如果要以多个字段条件来查寻,那么便需传入所有的字段名称,并且以分号分隔每一个字段名称。
第二个参数KeyValues是指开发人员欲查寻的条件数值。它的类型是Variant,因为Variant几乎可以代表任何的类型,因此开发人员可以查寻整数、小数、字符串,或是布尔值的条件。同样,如果开发人员只查寻一个条件数值,那么就可以直接在这个参数位置传入。如果是以多个字段条件来查寻,那么开发人员必须建立一个Variant数组,然后在这个数组中的每一个元素中指定条件数值,再传递Variant数组到这个参数中。至于Variant数组则可以使用VarArrayOf方法,或是使用VarArrayCreate方法来建立,在稍后的范例中会有程序代码说明。
Locate方法的最后一个参数TLocateOptions则是让开发人员在查寻字符串字段时,指定以什么标准来查寻数据。开发人员可以指明不分大小写来查寻字符串数据,或是以部分字符串数值来查寻数据。下面就是TLocateOptions的类型定义:
type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = setof TLocateOption;
在使用Locate时,如果使用loCaseInsensitive就代表不分大小写查寻数据;如果使用loPartialKey就代表要以部分字符串来查寻数据。
Locate方法的回传数值是布尔值,它代表Locate方法是否成功找到了要查寻的数据。如果找到,就回传True,否则就回传False。当Locate方法成功地查寻到数据之后,它就会移动目前的记录位置到这笔数据上,否则就会停留在Locate开始查寻之前的记录位置上。
KeyExclusive属性和KeyFieldCount属性调用GotoNearest、FindNearest等函数时,如果KeyExclusive属性设为False,匹配的记录将成为当前记录(如果找到的话); 如果KeyExclusive属性设为True,匹配的记录的下一条记录成为当前记录。如果一个索引中有多个字段,而您只想基于其中部分字段进行搜索,就要设置KeyFieldCount属性指定关键字段的个数。例如,假设索引中有三个关键字段,而您只想基于其中第一个字段进行搜索,就把KeyFieldCount属性设为1。如果把KeyFieldCount属性设为2,表示基于前面2个字段进行搜索。如果把KeyFieldCount属性设为3,表示基于前面3个字段进行搜索。但是,如果要基于第一个和第三个字段进行搜索,KeyFieldCount属性无能为力。