![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Как сделать так, чтобы при попытке ввести в поле текст раскладка клавиатуры автоматически менялась на русский.
|
|
#2
|
|||
|
|||
|
LoadKeyboardLayout('00000419', KLF_ACTIVATE);
Фунция API (модуль Windows) будет переключать клавиатру на русскую раскладку, если в системе установлен русский язык. |
|
#3
|
|||
|
|||
|
спасибо, понял
вот ситуация: в одно поле можно вводить только русский текст (например фамилия), во второе - только латинский (например название автомобиля или номер кузова для Японцев и Европейцев) в трете - опять только русский и т.д. в программе реализован переход между полями плавишами Enter и Tab(по умолчанию), я могу менять раскладку программно на онКлик по полю, а как ее менять если переход осуществляется клавишами? Последний раз редактировалось Darken, 30.03.2009 в 10:37. |
|
#4
|
|||
|
|||
|
Darken, поля ввода прекрасно обрабатывают события OnEnter (когда поле получает фокус) и OnExit (когда фокус уходит). На мой взгляд, переключать раскладки лучше по этим событиям, а не по клику. Тогда решается вопрос с переходом клавишами.
|
|
#5
|
|||
|
|||
|
ок, спасибо
|
|
#6
|
|||
|
|||
|
А как сделать чтоб в поле можно было вводить только цифры
|
|
#7
|
||||
|
||||
|
Код:
if not (Key in ['0'..'9', #8]) then // если Key не цифра или backspase
Key := #0; |
|
#8
|
||||
|
||||
|
Если кому интересно мое мнение: "Поубивал бы всех тех программистов которые переключают раскладки без участия пользователя". Потому как я знаю какая раскладка у меня текущая и когда мне это нужно переключаю на нужную.
Darken, вот начну я пользоваться твоей программой, надо будет ввести текст на русском, я встану на поле ввода, и, зная что в системе у меня по умолчанию английский переключусь на автомате, просто не задумываясь над действиями. А во время получения фокуса твое поле ввода уже переключило язык на русский, а т.к. у меня в системе всего 2 раскладки я снова получу английский. Понятно что я это замечу, матюгнусь, переключу еще раз, закрою программу, uninstall запущу. ЗЫЖ Если уж тебе так важна только кирилица, обрабатывай KeyPress и если буква из ЛАТИНИЦЫ меняй ее на букву из КИРИЛЛИЦИ стоящую на этой же кнопки (т.е. при вводе "q" она автоматически меняется на "й"). Не забывай еще и о том строчная или заглавная буква введена. |
|
#9
|
||||
|
||||
|
Думаю лучше сделать так:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['А'..'я', #8, '0'..'9', #32]) then
begin
Key := #0;
MessageBeep(48);
end;
end; |
|
#10
|
|||
|
|||
|
Цитата:
Но есть же и другие пользователи. Сколько раз наблюдал одну и ту же картину: сидит тетенька склонившись над клавиатурой и тупо набивает текст, а на экран лезет нетленный опус "Ljujdjh yf jrfpfybt eckju..." Так что в моих прогах автоматический переход на русскую раскладку частая фича. Зависит, правда, от контингента народонаселения у заказчика. Ну, надеюсь, мои гениальные работы с автопереключением не попадут в жесткие руки Aristarh Dark (еще пожить охота). |
|
#11
|
||||
|
||||
|
А ведь здравая идея проскочила не переключать раскладку, а сделать автотранслитер. Что-то типа такого:
Код:
Const
Lat = '~@#$^&QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?`qwertyuiop[]asdfghjkl;''\zxcvbnm,./';
Cyr = 'Ё"№;:?ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,ёйцукенгшщзхъфывапролджэ\ячсмитьбю.';
var
i: Integer;
begin
for i := 1 to Length(Lat)
do if Key=Lat[i] then Key := Cyr[i];
end; |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
xxbesoxx (24.08.2014)
| ||
|
#12
|
|||
|
|||
|
Страдалецъ, так будет эффективнее:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Lat = '~@#$^&QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?`qwertyuiop[]asdfghjkl;''\zxcvbnm,./';
Cyr = 'Ё"№;:?ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,ёйцукенгшщзхъфывапролджэ\ячсмитьбю.';
var
i: Integer;
begin
i := Pos(Key, Lat);
if i <> 0 then Key := Cyr[i];
end; |
|
#13
|
||||
|
||||
|
чуваки, хм, прикольно, респект))
|