Когда-то давно задавал вопрос…
На форме есть StringEdit и DBGrid. Значение StringEdit — «живой» фильтр для DBGrid. Ввели в StringEdit '1' и DBGrid обновляется с запросом типа 'WHERE … LIKE '1%'. Ввод в StringEdit обрабатывается в OnTextEdited.
Однако, если в StringEdit выделить введённое значение и ввести что-то новое, то OnTextEdited сработает два раза, сначала для пустой строки, второй раз для введённых данных.
Получается два запроса к базе, причем первый очень большой и долгий, так как никакого 'WHERE' для пустого фильтра нет и таблица выбирается полностью, а затем выбираются данные согласно введённым данным.
Как получить последнее значение, без промежуточных вариантов?