Изменение значения tStringEdit

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Ответить
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Изменение значения tStringEdit

Сообщение t-ea »

Я раньше уже спрашивал как отследить ввод данных в StringEdit и сейчас использую событие OnTextEdited.

Однако, в случае если в поле ввода содержится какое-то значение и оно через буфер обмена заменяется на новое, то это событие срабатывает дважды: сначала с пустой строкой, затем с новым содержимым вставленным из буфера.
Так StringEdit используется для моментальной фильтрации в зависимости от содержимого, подобное поведение приводит к тому, что выполняется два запроса к базе данных, причём первый запрос — с пустой строкой, а значит и без фильтрации — приводит к выборке всех строк, что мало того что не нужно, так ещё и достаточно долго выполняется.

Что можно сделать, чтобы при вставке строки из буфера обмена, первое событие с пустой строкой пропускалось?
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

tStringEdit, Это из какой бибилотеки?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

t-ea
используй onsetvalue, и внутри процедуры используй проверку на avalue

Добавлено спустя 1 минуту 41 секунду:
Logo писал(а):tStringEdit, Это из какой бибилотеки?

это МСЕ, читаем в каком форуме тема.
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

Не-е, для моей текущей идеи не подходит, так как OnSetValue срабатывает только при покидании «контрола».
При нажатии символьной клавиши, Backspace или Delete событие не вызывается.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

ну дык изменение только в OnSetValue все остальное не изменение и по ескейпу будет отменено, в таком случае я бы онкейдоун юзал.
Ответить