TListbox,根据模式选择项目

时间:2014-01-31 10:26:20

标签: delphi

如果您的列表框包含许多项目并且您需要选择例如,则选择项目会产生痛苦的工作通过手动点击和选择400项。 有没有一种优雅的方法可以使用某个“按模式功能选择项目”从列表框中选择项目???

1 个答案:

答案 0 :(得分:3)

假设您拥有可以匹配模式的代码。让我们说它有这个界面:

function MatchesPattern(const Value, Pattern: string): Boolean;

然后您可以使用以下功能选择匹配的所有项目:

procedure SelectMatchingItems(ListBox: TListBox; const Pattern: string);
var
  i: Integer;
begin
  for i := 0 to ListBox.Count-1 do
    ListBox.Selected[i] := MatchesPattern(ListBox.Items[i], Pattern);
end;

如果您准备使用匿名方法,则可以使用谓词。

procedure SelectMatchingItems(ListBox: TListBox; 
  const Matches: TFunc<string, Boolean>);
var
  i: Integer;
begin
  for i := 0 to ListBox.Count-1 do
    ListBox.Selected[i] := Matches(ListBox.Items[i]);
end;

后一种方法是最灵活的,如果你有一个具有足够功能的Delphi,你应该如何解决这个问题。