![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Предотвращение вставки недопустимых символов из буфера [D7]
User © (2010-04-10 16:25:00)
Edit1KeyPress:
if not (Key in ['a'..'z', 'A'..'Z', 'а'..'я', 'А'..'Я', 'ё', 'Ё']) then Key := #0;
Пользуюсь этим нехитрым методом для предотвращения ввода в Edit недопустимых (для моей конкретной задачи) символов.
Но обнаружил, что если вставить в Эдит строку из буфера обмена, содержащую недопустимые символы (цифры), то они вставятся.
Как это можно исправить?
Blah-blah-blah... (2010-04-10 21:55:00) [1]
SelStart := Edit1.SelStart;
Str := Edit1.Text;
for i := Length(Str) downto 1 do
if (Str[i] in ['b', 'l', 'a', 'h']) then
begin
Delete(Str, i, 1);
if (i <= SelStart) then
SelStart := SelStart - 1;
end;
Edit1.Text := Str;
Edit1.SelStart := SelStart;
P.S. Но, как по мне, лучше перехватывать WM_PASTE.
Anatoly Podgoretsky (2010-04-10 18:49:00) [2]> User (10.04.2010 18:40:03) [3]
Тебе все сиволы доступны, а может ты не знаешь, что строка по сути это массив символов.
Правильный$Вася (2010-04-10 18:45:00) [3]
> у OnChange нет входящего параметра var Key: Char.
зато там есть кое-что другое
User (2010-04-10 18:40:00) [4]
> вырезать после вставки?
Ну если не найду ничего лучшего...
> Есть ещё событие OnChange
Да, но в отличие от OnKeyPress у OnChange нет входящего параметра var Key: Char.
Демо (2010-04-10 17:46:00) [5]
> User (10.04.10 16:25)
Есть ещё событие OnChange
Правильный$Вася (2010-04-10 17:14:00) [6]вырезать после вставки?