Also falls du das AdvStringGrid kannst du ganz einfach mit AdvStringGrid1.HideRow(integer), AdvStringGrid1.UnHideRow(integer) arbeiten und deinen "Filter" kannst du mit AdvStringGrid1.Cols[integer] füllen.
Wenn du allerdings nur das delphieigene StringGrid hast kannst du als nicht so elegante Lösung RowHeights[integer] := 0 setzten, aber da "sieht man" die versteckten Zeilen leider noch. Sonst kommst du um eine Struktur die alle Daten hält nicht herum, eine
DB oder ein zweites Grid, oder auch eine Stringliste mit angehängten Objekten.