Событие KEYDOWN и язык ввода - страница 2

 
Anatoli Kazharski:

Создал заявку (#1651549) по своим пунктам.

Уже принята к рассмотрению.

отлично.

это то, что мешает работе с CGraphic

 

Anatoli Kazharski 2017.01.17 13:36

В событии CHARTEVENT_KEYDOWN: ...

... dparam сейчас похоже вообще не работает. Нужно обратиться в сервисдеск.

По этому пункту получил подробный ответ в сервисдеске. Ошибки нет.

Ответ:

Support Team 2017.01.18 15:11 

Вы словите значение больше 1 только на очень загруженной системе, когда клиентский терминал (не эксперт) не будет успевать обрабатывать WM_KEYDOWN 

Дело тут вот в чём. 

  1. терминал очень быстро обрабатывает системное событие WM_KEYDOWN, поэтому счётчик повторений обычно равен единице, но при большой нагрузке на терминал(систему?), счётчик может быть и больше.
  2. т.к. эксперт работает в своём потоке, то терминал ставит "WM_KEYDOWN" в очередь эксперту и завершает обработку WM_KEYDOWN (отсюда и скорость обработки). Если же эксперт "занят" и не обрабатывает OnChartEvent, то в его очереди может скопиться много событий CHARTEVENT_KEYDOWN для одной зажатой клавиши, но у всех этих событий, счётчик повторений будет 1

 
o_O:

отлично.

это то, что мешает работе с CGraphic

До CGraphic у меня пока руки не дошли. В моём случае очень мешало при перемещении текстового курсора в собственном текстовом поле ввода посредством перечисленных клавиш. Ну и при вводе символов "+" и "-" масштаб графика изменялся, что тоже раздражало.

В сервисдеске ответили, что сделают. То есть добавят возможность отключать управление графиком.

 
o_O:

отлично.

это то, что мешает работе с CGraphic

В билд 1508 уже добавлено новое свойство:

Support Team 2017.01.20 16:44 

Добавлено свойство CHART_KEYBOARD_CONTROL 
 
Anatoli Kazharski:

В билд 1508 уже добавлено новое свойство:

по моей заявке будет

short TranslateKey(int key_code);

аналог ToUnicodeEx

 
o_O:

по моей заявке будет

аналог ToUnicodeEx

Очень круто. Гора с плеч. )
 
+++
 
o_O:

по моей заявке будет

short TranslateKey(int key_code); 

аналог ToUnicodeEx

Только что вышло обновление (build 1510):

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- Нажатие кнопки на клавиатуре
   if(id==CHARTEVENT_KEYDOWN)
     {
      ::Print("symbol: ",::ShortToString(::TranslateKey((int)lparam)));
      return;
     }
  }

//---

Пример (Уйгурский):

2017.01.20 22:10:37.622 symbol: چ
2017.01.20 22:10:38.198 symbol: ۋ
2017.01.20 22:10:38.950 symbol: ې
2017.01.20 22:10:39.334 symbol: ر
2017.01.20 22:10:39.582 symbol: ت
2017.01.20 22:10:39.886 symbol: ي
2017.01.20 22:10:40.213 symbol: ۇ
2017.01.20 22:10:40.774 symbol: ڭ
2017.01.20 22:10:41.654 symbol: و
2017.01.20 22:10:41.838 symbol: پ
2017.01.20 22:10:43.983 symbol: ھ
2017.01.20 22:10:44.078 symbol: س
2017.01.20 22:10:44.310 symbol: د
2017.01.20 22:10:44.583 symbol: ا
2017.01.20 22:10:44.782 symbol: ە
2017.01.20 22:10:45.278 symbol: ق
2017.01.20 22:10:45.517 symbol: ك
2017.01.20 22:10:45.701 symbol: ل

//---

Ну теперь просто приятно работать со всем этим. ) 

 
Я бы сделал такой механизм:

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

И так, сделаем механизм, работающий по принципу старой печатной машинки. 

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

Разработав механизм смещения поля ввода над канвасом и перевода текста с одного обьекта на другой, можно решить задачу многострочного поля ввода.
Ну а введенный текст сохранять где то в памяти и при необходимости востребовать через остальной интерфейс.
 
Реter Konow:

Допустим, у нас нет возможности что либо просить в сервисдеке.

думаю тут половина фич сжедана по запросу в СД или сделана по инициативе отдельныъ разрабов самостоятельно.

так что получайте удовольствие от плодотворного сотрудничества