![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() приветствую всех
у меня два вопроса: 1. как запретить вводить в поле латинницу 2. как в этом же текстовом поле, первую букву "поднимать" в верхний регистр автоматически спасибо |
#2
|
|||
|
|||
![]() нашел на цифири:
изменю на буквы, и, надеюсь, прокатит Код:
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char); begin if Key in ['0'..'9'] then key :=#0; end; остался только верхний регистр первого символа |
#3
|
||||
|
||||
![]() Прокатит. В событие OnChange, используй AnsiUpperCase
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
![]() пробовал, спасибо
в общем варианте получилось так: Код:
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
|
|||
|
|||
![]() работает безотказно
блин... сам спросил, сам ответил... ну может кто-то будет гуглить, найдет, понравится, останется |
#6
|
||||
|
||||
![]() Так не про катило почему такой большой код если проблема решается так
Код:
if Key in ['A'..'z'] then key :=#0; Нет ничего не возможного. Вопрос только во времени... |
#7
|
||||
|
||||
![]() и на последок в верхний регистр первую букву можно поднимать так -
Код:
function strtotitle(text:string):string; begin Result:=AnsiLowerCase(text); Result[1]:=AnsiUpperCase(Result[1])[1]; end; ..... begin str:=strtotitle(str); end; самый простой способ по моему.... Нет ничего не возможного. Вопрос только во времени... |
#8
|
|||
|
|||
![]() я указал все буквы, согласен
тоже считаю, что такая подстраховка лишняя, спасибо |
#9
|
||||
|
||||
![]() Цитата:
![]() Код:
... Result:=AnsiUpperCase(text); ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
![]() Неа таким образом ты увеличишь все буквы а нам нужен только первый
так что в моем случае - уменьшаем все буквы - потом увеличиваем первую... ![]() Нет ничего не возможного. Вопрос только во времени... |
#11
|
||||
|
||||
![]() Я предлагал увеличить только первую, так как подразумевалось из вопроса, что все остальные уже в нижнем регистре.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
||||
|
||||
![]() пример в студию
![]() ![]() П.С. если хочешь открой и сам проверь в дельфи... Нет ничего не возможного. Вопрос только во времени... |
#13
|
||||
|
||||
![]() offtop:
Хватить флудить, я не глядя скопировал твою строку, а ты разошёлся. ТС доволен так что успокойся. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#14
|
|||
|
|||
![]() вы учитывайте, что нужно в реальном времени
тоесть во время ввода строки, нужно уловить первый символ и "Поднять" первую букву но я попробую все приведенные примеры |
#15
|
||||
|
||||
![]() О чем вообще можно было тут так много говрить, алгоритм простой до безобразия.
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key in ['A'..'Z', 'a'..'z'] then key := #0 else if (Length((Sender as TEdit).Text) = 0) and (key in ['а'..'я']) then key := chr(ord(key) - 32); end; Меня греют ваши плюсы к моей репутации... |