Home » Tipps & Tricks » Komponenten » TStringGrid » StringGrid nach dem Zelleninhalt durchsuchen

StringGrid nach dem Zelleninhalt durchsuchen

function SeekRecord(Grid: TStringGrid; ColOrder: array of integer;
  StrList: array of String): Boolean;
var
  I, J : Integer;
begin
  result := false;
  for I := 1 to Grid.RowCount - 1 Do
  begin
    for J := low(ColOrder) to high(ColOrder) do
    begin
      if (Grid.Cells[ColOrder[J],I]=StrList[J]) then
         result := true
      else
         result := false;
      if result = false then break;
    end;
    if result = true then break;
  end;

  if result = true then
     Grid.Row := I
  else
     ShowMessage('Datensatz nicht gefunden!' +#13#13+ 'Record not Found!');
end;

Aufrufbeispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Suche Zeile nach Column 0 mit Suchbegriff
  SeekRecord(Grid,[0],['Suchbegriff']);
  //Suche Zeile nach Column 0 und 1 mit Suchbegriffen 1 und 2
  SeekRecord(Grid,[0,1],['Suchbegriff1','Suchbegriff2']);
  //Suche Zeile nach Column 1, 5 und 2 mit Suchbegriffen 1, 2 und 3
  SeekRecord(Grid,[1,5,2],['Suchbegriff1','Suchbegriff2','Suchbegriff3']);
  //usw.
end;