gpt4 book ai didi

delphi - 我如何使用 IndexOfObject 方法和对象信息设置 Delphi 组合框当前项目索引

转载 作者:行者123 更新时间:2023-12-03 15:30:19 31 4
gpt4 key购买 nike

我填充了 TStringList 对象,如下所示:

var
infoObject: TStringObject;
dataObject: TStringList

_query.First;
for i := 0 to _query.RecordCount-1 do
begin
infoObject := TStringObject.Create;
infoObject.stringsData.Add(_query.Fields[0].AsString);
dataObject.AddObject(_query.Fields[1].AsString, infoObject);

_query.Next;
end;

然后用它来填充组合框,如下所示:

combo1.Items.Clear;
combo1.Items.AddStrings(dataObject);

现在我想用数据库中的相同字符串值设置组合框 itemIndex 。我知道在常规情况下,当我有文本显示在组合框 az 文本中时,使用 IndexOf 会帮助我,如下所示:

combo1.ItemIndex := combo1.Items.IndexOf('[text of item]');

但我想用对象中存在的值而不是文本来设置它。我看到 IndexOfObject 方法,但它不能像 IndexOf 一样工作,或者我不知道应该如何使用它。我写了这行,但它不起作用:

itemObject := TStringObject.Create;
itemObject.stringsData.Add('[value of item]');
combo1.ItemIndex := combo1.Items.IndexOfObject(itemObject);

有人可以帮忙吗?应该提到我正在使用 Delphi 2007 和 Raize Componenet ComboBox。

最佳答案

您没有在 ComboBox 本身中存储任何对象指针,因此您不能使用 ComboBox 自己的 IndexOfObject() 方法。无论如何它都不会起作用,因为 IndexOfObject() 搜索对象指针,但您正在寻找文本。您必须手动迭代 TStringList 查找对象文本,例如:

var
dataObject: TStringList;

function IndexOfObjectText(const S: String): Integer;
var
I : Integer;
begin
Result := -1;
for I := 0 to dataObject.Count-1 do
begin
if TStringObject(dataObject.Objects[I]).stringData.IndexOf(S) <> -1 then
begin
Result := I;
Exit;
end;
end;
end;

然后你可以这样做:

combo1.ItemIndex := IndexOfObjectText('[value of item]');

关于delphi - 我如何使用 IndexOfObject 方法和对象信息设置 Delphi 组合框当前项目索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595034/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com