Последняя версия DataExpress 3 beta от 15 сентября 2020 года.

Изображение Скачать | Изображение Что нового?



Объявление:

Если вам понравилась программа и вы ее интенсивно используете - замолвите словечко о ней на вашем сайте (блоге, форуме, твитере, краской на подъезде, ютуб-канале и т.д.) с активной (по-возможности) ссылкой на сайт программы/форум. Тем самым вы можете внести небольшой вклад в seo-карму проекта в виде входящих ссылок.
Спасибо! Администрация :)


>> Обсудить <<

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

Все вопросы, связанные с написанием скриптов и SQL-запросов.
Виталий1990
Опытный
Сообщения: 297
Зарегистрирован: 15 июл 2017, 15:08
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Поблагодарили: 2 раза

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

Сообщение Виталий1990 » 07 май 2019, 13:45

Можно ли сделать так, чтобы в конкретном поле вместо кириллицы вбивалась латиница? Без переключения раскладок.

Аватара пользователя
Develop-Soft
Сообщения: 1826
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 494 раза
Контактная информация:

Re: Программное переключение клавиатуры

Сообщение Develop-Soft » 07 май 2019, 13:48

Можно написать такое расширение.

Виталий1990
Опытный
Сообщения: 297
Зарегистрирован: 15 июл 2017, 15:08
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Программное переключение клавиатуры

Сообщение Виталий1990 » 08 май 2019, 23:41

Код: Выделить всё

procedure OP(Sender: TObject; var UTF8Key: TUTF8Char; Key: Char);
begin
if key=';' then UTF8key:='Ж'
 else
 if key='v' then UTF8key:='М';
end;


Код: Выделить всё

procedure Form_Create;
begin 
 dxComboBox7.OnKeyPress:=@OP;
 end; 


Попробовал прописать скриптом выше, но компилятор ругается на несоответствие.

Аватара пользователя
Develop-Soft
Сообщения: 1826
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 494 раза
Контактная информация:

Re: Программное переключение клавиатуры

Сообщение Develop-Soft » 10 май 2019, 17:12

Код: Выделить всё

function KeybLayerMirror(UTF8Key: TUTF8Char;Direct:string):TUTF8Char;
var
  Ru,En,L1,L2:array of byte;
  i:integer;
  k:byte;
  s: String;
begin
  Ru :=
  [233,246,243,234,229,237,227,248,249,231,244,251,226,224,239,240,238,235,228,
  255,247,241,236,232,242,252,201,214,211,202,197,205,195,216,217,199,212,219,
  194,192,207,208,206,203,196,223,215,209,204,200,210,220];
  En :=
  [113,119,101,114,116,121,117,105,111,112,97,115,100,102,103,104,106,107,108,
  122,120,99,118,98,110,109,81,87,69,82,84,89,85,73,79,80,65,83,68,70,71,72,74,
  75,76,90,88,67,86,66,78,77];
  case trim(lowercase(Direct)) of
    'ru-en' :
    begin
      L1:=Ru; L2:=En;
    end;
    'en-ru' :
    begin
      L1:=En; L2:=Ru;
    end
    else exit;
  end;
  s := Utf8ToWinCP(UTF8Key)
  k := Ord(s[1]);
  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;

procedure Form_Create;
begin
   dxEdit1.OnUtf8KeyPress := @dxEdit1_OnUtf8KeyPress;
   dxEdit2.OnUtf8KeyPress := @dxEdit2_OnUtf8KeyPress;
end;

Виталий1990
Опытный
Сообщения: 297
Зарегистрирован: 15 июл 2017, 15:08
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Программное переключение клавиатуры

Сообщение Виталий1990 » 10 май 2019, 18:57

Благодарю. Сажусь за изучение.

Виталий1990
Опытный
Сообщения: 297
Зарегистрирован: 15 июл 2017, 15:08
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Программное переключение клавиатуры

Сообщение Виталий1990 » 11 май 2019, 08:51

Прикладываю исправления для массивов.

Код: Выделить всё

  Ru :=
  [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,
  212,219,194,192,207,208,206,203,196,198,221,
  223,215,209,205,200,210,220,193,222];
  En :=
  [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,
  65,83,68,70,71,72,74,75,76,58,34,
  90,88,67,89,66,78,77,60,62];

Аватара пользователя
Develop-Soft
Сообщения: 1826
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 494 раза
Контактная информация:

Re: Программное переключение клавиатуры

Сообщение Develop-Soft » 11 май 2019, 10:08

Виталий1990 писал(а):Прикладываю соль, перец по вкусу.
Да не вопрос...

Виталий1990
Опытный
Сообщения: 297
Зарегистрирован: 15 июл 2017, 15:08
Откуда: Санкт-Петербург
Благодарил (а): 1 раз
Поблагодарили: 2 раза

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

Сообщение Виталий1990 » 24 мар 2020, 17:42

Код: Выделить всё

procedure KP(Sender: TObject; var UTF8Key: TUTF8Char);
begin
 UTF8Key:=UTF8UpperCase(UTF8Key);
end;


Код: Выделить всё

dxSerialPasport11.OnUtf8KeyPress:=@KP;


Скрипт из этой темы "конфликтует" со скриптом, который сразу выводит текст в поле заглавными буквами. Весь текст, если не вводить с КапсЛоком или с зажатым шрифтом, выводится строчными буквами.

Аватара пользователя
Develop-Soft
Сообщения: 1826
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 494 раза
Контактная информация:

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

Сообщение Develop-Soft » 24 мар 2020, 17:48

Скрипт в этой теме - в принципе не является ни плагином ни расширением и может меняться потребителем на свое усмотрение как ему угодно (ему за это ничего не будет ;) )


Вернуться в «Программирование в DataExpress»