我需要一种在列表框中搜索并突出显示与搜索到的单词相同的所有单词的方法。
有人可以帮助我吗?
答案 0 :(得分:3)
如果您想在列表框中执行快速搜索并获得类似项目或确切项目的索引,解决方案就像这样
var
i : integer;
s : string;
begin
s := 'My Text' +#0;
i := Lst1.Perform(LB_FINDSTRING, $FFFFFFFF, PWideChar(s));
end;
i
是列表框项的索引,与您给定的字符串类似。
答案 1 :(得分:2)
你的意思是这样吗?
procedure TForm1.HighLight(aListbox: TListBox; aStr: string);
var
I : integer;
begin
aListbox.ClearSelection;
for I := 0 to aListbox.Items.Count-1 do
if aListbox.Items[I] = aStr then
aListbox.Selected[I] := true;
end;
您需要将列表框的MultiSelect属性设置为true才能使其生效。
答案 2 :(得分:1)
您尚未指定问题的确切原因。你需要帮助搜索吗?或者你需要帮助突出单词?
要进行搜索,您是在寻找列表框中的特定项目还是所有项目中的单词? 如果要搜索项目,可以使用TListBox.Items.IndexOf()。 如果要搜索单词,可以使用TListBox.Items.Text上的Pos()或PosEx()函数在整个文本中搜索它。或者使用TListBox.Items迭代项目,在每个项目上使用这些函数。
对于突出显示单词,TListBox本身不提供文本突出显示。如果您需要,您必须自定义绘制它。将其Style属性设置为lbOwnerDrawFixed,并为OnDrawItem事件编写自定义绘图代码。