Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 41

Программное переключение клавиатуры с разделителем

18.05.2019, 22:11. Показов 877. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код для программного переключения клавиатуры в конкретном поле.
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function KeybLayerMirror(UTF8Key: TUTF8Char;Direct:string):TUTF8Char;
var
  Ru,En,L1,L2:array of byte;
  i:integer;
  k:byte;
  s: String;
begin
  Ru :=                    //Массив ASCII-значений русской раскладки
  [233,246,243,234,229,236,227,248,249,231,245,250,  //первая строка, строчные буквы
  244,251,226,224,239,240,238,235,228,230,253,       //вторая строка, строчные буквы
  255,247,241,237,232,242,252,225,254,               //третья строка, строчные буквы
  201,214,211,202,197,204,195,216,217,199,213,218,   //первая строка, shift+символ
  212,219,194,192,207,208,206,203,196,198,221,       //вторая строка, shift+символ
  223,215,209,205,200,210,220,193,222];              //третья строка, shift+символ
  En :=                    //Массив ASCII-значений английской раскладки
  [113,119,101,114,116,118,117,105,111,112,91,93,    //первая строка, строчные буквы
  97,115,100,102,103,104,106,107,108,59,39,          //вторая строка, строчные буквы
  122,120,99,121,98,110,109,44,46,                   //третья строка, строчные буквы
  81,87,69,82,84,86,85,73,79,80,123,125,             //первая строка, shift+символ
  65,83,68,70,71,72,74,75,76,58,34,                  //вторая строка, shift+символ
  90,88,67,89,66,78,77,60,62];                       //третья строка, shift+символ
  case trim(lowercase(Direct)) of                    //Оператор множественного выбора
    'ru-en' :
    begin
      L1:=Ru; L2:=En;
    end;
    'en-ru' :
    begin
      L1:=En; L2:=Ru;
    end
    else exit;
  end;
  //Код введённого с клавиатуры символа
  //конвертируется из UTF-8 в кодировку Windows
  //и результат присвоить переменной s.
  s := Utf8ToWinCP(UTF8Key);
 
  //вернуть код, присвоенный переменной s
  //и присвоить его переменной k.
  k := Ord(s[1]);
 
  //Цикл проходит по массиву L1, находит
  //присвоенный переменной k код;
  //в результат выводит символ из
  //массива L2 с тем же порядковым номером i.
  for i:=0 to GetArrayLength(L1)-1 do
  if k = L1[i] then
  result := WinCPToUtf8(Chr(L2[i]));
end;
 
 
procedure Edit1_OnUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
 
  UTF8Key := KeybLayerMirror(UTF8Key,'en-ru');
end;
 
procedure Edit2_OnUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
  UTF8Key := KeybLayerMirror(UTF8Key,'ru-en');
end;                 
 
ComboBox19.OnUtf8KeyPress:= @Edit2_OnUtf8KeyPress;


Я не совсем уверен, как правильно оформить и добавить следующий алгоритм:
Если пробела нет: выполняем 'ru-en' (или Edit2_OnUtf8KeyPress), иначе - en-ru.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2019, 22:11
Ответы с готовыми решениями:

Программное переключение раскладки клавиатуры
Кто-нибудь знает, возможно ли в Паскале программное переключение раскладки клавиатуры с русского на английский. Подскажите, пожалуйста!

Возможно ли программное переключение раскладки клавиатуры?
Можно ли определить какова текущая раскладка клавиатуры выбрана и переключить ее на другую? Заранее благодарен всем. кто откликнется.

Программное переключение CPU
Здравствуйте. Такой вопрос. В Windows есть такая возможность как распределение нагрузки на CPU приложениям Пример ниже: грузите...

6
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 41
01.06.2019, 12:47  [ТС]
В данном случае больше всего интересует, как правильно задать условие "если есть пробел, то..."
С остальным проблем не должно возникнуть.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
01.06.2019, 12:54
А Вы вообще в чем пишете?
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
01.06.2019, 12:58
Цитата Сообщение от Puporev Посмотреть сообщение
А Вы вообще в чем пишете?
Lazarus скорее всего
0
01.06.2019, 13:00

Не по теме:

Я тоже так думаю, но последнее время все время выскакивают какие-то новые IDE и диалекты что лучше спросить.

0
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 41
01.06.2019, 13:31  [ТС]
В конкретном случае используется "RemObjects Pascal Script".
0
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 41
13.03.2021, 14:23  [ТС]
Приветствую. В коде ниже компилятор выдаёт ошибку "Type Mismatch" на строке
Pascal
40
  k := Ord(s[1]);
Не знаю, как исправить несовпадение данных.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function KeybLayerMirror(UTF8Key: TUTF8Char;Direct:string):TUTF8Char;
var
  Ru,En,L1,L2:array of byte;
  i:integer;
  k:byte;
  s: String;
begin
  Ru :=                                              //Массив ASCII-значений русской раскладки
  [233,246,243,234,229,236,227,248,249,231,245,250,  //первая строка, строчные буквы
  244,251,226,224,239,240,238,235,228,230,253,       //вторая строка, строчные буквы
  255,247,241,237,232,242,252,225,254,               //третья строка, строчные буквы
  201,214,211,202,197,204,195,216,217,199,213,218,   //первая строка, shift+символ
  212,219,194,192,207,208,206,203,196,198,221,       //вторая строка, shift+символ
  223,215,209,205,200,210,220,193,222];              //третья строка, shift+символ
  En :=                    //Массив ASCII-значений английской раскладки
  [81,87,69,82,84,86,85,73,79,80,123,125,            //первая строка, shift+символ
  65,83,68,70,71,72,74,75,76,58,34,                  //вторая строка, shift+символ
  90,88,67,89,66,78,77,60,62,                        //третья строка, строчные буквы
  81,87,69,82,84,86,85,73,79,80,123,125,             //первая строка, shift+символ
  65,83,68,70,71,72,74,75,76,58,34,                  //вторая строка, shift+символ
  90,88,67,89,66,78,77,60,62];                       //третья строка, shift+символ
  case trim(lowercase(Direct)) of                    //Оператор множественного выбора
    'ru-en' :
    begin
      L1:=Ru; L2:=En;
    end;
    'en-ru' :
    begin
      L1:=En; L2:=Ru;
    end
    else exit;
  end;
  //Код введённого с клавиатуры символа
  //конвертируется из UTF-8 в кодировку Windows
  //и результат присвоить переменной s.
  s:= Utf8ToWinCP(Utf8CharToString(UTF8Key));
 
  //вернуть код, присвоенный переменной s
  //и присвоить его переменной k.
  k := Ord(s[1]);
 
  //Цикл проходит по массиву L1, находит
  //присвоенный переменной k код;
  //в результат выводит символ из
  //массива L2 с тем же порядковым номером i.
  for i:=0 to GetArrayLength(L1)-1 do
  if k = L1[i] then
  result:= WinCPToUtf8(Chr(L2[i]));
end;
 
procedure dxEdit1_OnUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
  UTF8Key := KeybLayerMirror(UTF8Key,'en-ru');
end;
 
procedure dxEdit2_OnUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
  UTF8Key := KeybLayerMirror(UTF8Key,'ru-en');
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2021, 14:23
Помогаю со студенческими работами здесь

Программное переключение меню
Всем доброго времени суток. У меня есть стороннее приложение при клике по окну которого появляется меню (стандартное, как у большинства...

Программное переключение счетчика
накидал плагин для переключалки. http://jsfiddle.net/wfmttp7n/3/ Но не знаю как сделать так, что-бы по ходу кода я мог в ручную...

TabControl. Программное переключение вкладок
День добрый! Никак не могу рещить простую проблему: Нужно программным способом переходить по табам с одного на другой, примерно...

Программное переключение между MDIChild???
Если кто знает подскажите. Дело вот в чем. У меня на MDI форме должны быть две кнопки для быстрого переключения между открытыми дочерними...

Сетевые карты - программное переключение
Привет всем! Помогите плиз! Как подступиться даже не знаю.. Дело в том что на компьютере две сетевые карты (и к ним подключены две...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru