Проверка ввода на Кириллицу в DBGrid
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
maksmkv, почему не занимается -- Alexs занимается. Даже свои компоненты точит во всю. Обычно он выступает экспертом.
maksmkv писал(а):такое ощущение, что на Lazarus БД никто не делает и проверкой не заморачивается
Как раз всё с точностью до наоборот - БД тут совершенно не при чём, никто не заморачивается отсеиванием русских букв...
Если конкретно по вопросу - как Вы относитесь к функции Pos()? Она Вам сильно не нравится?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
maksmkv писал(а):и проверкой не заморачивается
Вообще-то у меня за два десятка лет работы с БД никогда не было задачи не допускать ввода символов в грид. Наоборот, проблемы всегда были с обеспечением беспрепятственного ввода в любой кодировке. А очистка данных от лишнего делается в AfterEdit или вообще на стороне сервера, триггером и встроенной процедурой.
Вот такой номер должен прокатить:
Код: Выделить всё
procedure TForm1.DBGrid1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
var
Key: AnsiChar;
const
RuLetters: TSysCharSet = [#168, #184, #192..#223];
begin
//здесь можно вставить проверку системной кодовой страницы
Key := UTF8ToAnsi(UTF8Key)[1];
if Key in RuLetters then
UTF8Key := '';
Vadim писал(а):Если конкретно по вопросу - как Вы относитесь к функции Pos()? Она Вам сильно не нравится?
Учитывая, что это второй топик с упоминанием этой функции, которая 100% решила бы проблему TC, вопрошающий еще к ее изучению не приступал
zoltanleo писал(а):вопрошающий еще к ее изучению не приступал
Ай, и не говорите... Всё-таки серьёзно нынешнее образование задолжало перед нашим молодым поколением... Ох уж мне этот бурундучок Фурсенко, который заявил, что высшая математика убивает креативность...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Vadim, это математика? Видимо, это личная месть.
По поводу функции Pos() , не хватает логики как реализовать правильно. Делаем простую БД с хранением только в полях латинских букв, русских при вводе не должно быть (БД паролей для внутреннего пользования). Основная деятельность не программирование, но писать ПО хоть криво-косо , но очень нравится. В свое время прочитал книгу по DELPHI Фленова, Культина Delphi в задачах и примерах и другие. По БД специально не сталкивался и вот впервые) По поводу образования - только Pascal на листке был.
maksmkv писал(а):По поводу функции Pos() , не хватает логики как реализовать правильно
Пишу с телефона, поэтому только тезисно. В uses добавить LazUTF8, в OnKeyPress:
Код: Выделить всё
const rus_char = 'АаБб';//тут можно вообще любые проверяемые символы написать
begin
if Utf8Pos(key, rus_char) > 0 then key=#0;
end;
Ну и почитать, для чего эта функция нужна
https://lazarus-ccr.sourceforge.io/docs ... f8pos.html
Всем спасибо - тему можно закрывать.
