我们在许多时候,需要从数据集中将一组值传递给一个列表框供用户选择。而实现这一方式的基本算法都是遍历并去重,QDataSet 提供 EnumValues 函数来完成这一功能:
function EnumValues(const AFields: QStringW; AList: TStrings;AValueDelimiter: Char; AIgnoreNull: Boolean): Integer;
EnumValues 的几个参数说明如下:
- AFields : 要枚举值的字段列表,多个字段的话,中间以 “,” 或 “;” 分隔
- AList : 用于存贮返回值的字符串列表对象
- AValueDelimiter : 列表多个字段的值时,用于分区多个值的分隔符
- AIgnoreNull : 是否忽略字段值为空的情况,如果为 False ,空值会返回字符串 NULL ,如果为 True,空值返回空字符串
比如一行的数据如下:
Name Spell 赵有才 ZYC 李光明 LGM
我们调用 EnumValues(‘Spell,Name’,AList,’|’,true) 会得到下面的两个字符串:
ZYC|赵有才 LGM|李光明
如果设置 AValueDelimiter 为 #0 ,则得到的结果为:
ZYC赵有才 LGM李光明
如果只有一个字段,则 AValueDelimiter 参数被忽略。