Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.08.2011, 23:30
KristoferRuotsi KristoferRuotsi вне форума
Прохожий
 
Регистрация: 14.05.2011
Сообщения: 36
Репутация: 10
По умолчанию Запрет на ввод латиницы

приветствую всех
у меня два вопроса:

1. как запретить вводить в поле латинницу
2. как в этом же текстовом поле, первую букву "поднимать" в верхний регистр автоматически

спасибо
Ответить с цитированием
  #2  
Старый 16.08.2011, 23:38
KristoferRuotsi KristoferRuotsi вне форума
Прохожий
 
Регистрация: 14.05.2011
Сообщения: 36
Репутация: 10
По умолчанию

нашел на цифири:
изменю на буквы, и, надеюсь, прокатит

Код:
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
 if Key in ['0'..'9'] then key :=#0;
end;

остался только верхний регистр первого символа
Ответить с цитированием
  #3  
Старый 16.08.2011, 23:54
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Прокатит. В событие OnChange, используй AnsiUpperCase
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 17.08.2011, 00:41
KristoferRuotsi KristoferRuotsi вне форума
Прохожий
 
Регистрация: 14.05.2011
Сообщения: 36
Репутация: 10
По умолчанию

пробовал, спасибо

в общем варианте получилось так:

Код:
function UpCaseRus(ch:Char):Char;
asm
  CMP   AL,'a'
  JB    @@exit
  CMP   AL,'z'
  JA    @@Rus
  SUB   AL,'a' - 'A'
  RET
@@Rus:
  CMP   AL,'я'
  JA    @@Exit
  CMP   AL,'а'
  JB    @@yo
  SUB   AL,'я' - 'Я'
  RET
@@yo:
  CMP   AL,'?'
  JNE   @@exit
  MOV   AL,'?'
@@exit:
end;

procedure TForm5.sEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key in ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','!','@','#','$','%','^','&','*','(',')','_','-','+','<','>','/','\','|','.',',',' ']) then
  begin
   Key:=#0;
   Application.MessageBox(PChar(' Поменяйте раскладку клавиатуры    '),':|',MB_OK);
  end;
 with Sender as TEdit do
  begin
   if (Text = '') or (Text[SelStart] = ' ') or (SelLength = Length(Text)) then
    begin
     if Key in ['й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю'] then
      begin
       Key:=UpCaseRus(Key);
      end;
    end;
  end;
end;
Ответить с цитированием
  #5  
Старый 17.08.2011, 00:42
KristoferRuotsi KristoferRuotsi вне форума
Прохожий
 
Регистрация: 14.05.2011
Сообщения: 36
Репутация: 10
По умолчанию

работает безотказно

блин... сам спросил, сам ответил...

ну может кто-то будет гуглить, найдет, понравится, останется
Ответить с цитированием
  #6  
Старый 17.08.2011, 00:44
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Так не про катило почему такой большой код если проблема решается так

Код:
if Key in ['A'..'z'] then key :=#0;
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025