Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.13;
Скачать: CL | DM;

Вниз

Как поставить клавише в соответствие русский символ?   Найти похожие ветки 

 
@!!ex ©   (2007-12-16 16:41) [0]

Есть проект, в нем считывается клавиша и записывается в поле.
Делали проект для за бугорья, никаких проблем не было, нажал юзер кнопочку D, отпечаталсь D.
А теперь захотелось начальство локализацию сделать...
и надо, чтобы пользователь нажимал кнопочку D, а печаталась буковка В.
Ничего кроме виртуального кода нажатой кнопки неизвестно...


 
Правильный_Вася   (2007-12-16 16:46) [1]

через раскладку перекодировать?


 
Leonid Troyanovsky ©   (2007-12-17 09:59) [2]


> @!!ex ©   (16.12.07 16:41)  

> А теперь захотелось начальство локализацию сделать...
> и надо, чтобы пользователь нажимал кнопочку D, а печаталась
> буковка В.

Странная какая-то локализация. Впрочем, извольте-с

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 vk: Word;
 buf: array [0..1] of Char;
 kbs: TKeyboardState;
begin
 vk := VkKeyScan(Key);
 GetKeyboardState(kbs);
 ToAsciiEx(vk, MapVirtualKey(vk, 0), kbs, buf, 0, $04190419);
 Key := buf[0];
end;

--
Regards, LVT.


 
@!!ex ©   (2007-12-17 12:03) [3]

Спасибо, Леонид! То что нужно!!!

P.S.
Это невся локализация естественно, все остальное просто проблем не вызвало, :)


 
Kolan ©   (2007-12-17 12:21) [4]

Вот еще мой вариант.

function TCardDataView.ConvertRussianSymbolToEnglish(C: Char): Char;
begin
 case C of
   "Й": Result := "Q";
   "Ц": Result := "W";
   "У": Result := "E";
   "К": Result := "R";
   "Е": Result := "T";
   "Н": Result := "Y";
   "Г": Result := "U";
   "Ш": Result := "I";
   "Щ": Result := "O";
   "З": Result := "P";
   "Ф": Result := "A";
   "Ы": Result := "S";
   "В": Result := "D";
   "А": Result := "F";
   "П": Result := "G";
   "Р": Result := "H";
   "О": Result := "J";
   "Л": Result := "K";
   "Д": Result := "L";
   "Я": Result := "Z";
   "Ч": Result := "X";
   "С": Result := "C";
   "М": Result := "V";
   "И": Result := "B";
   "Т": Result := "N";
   "Ь": Result := "M";

   "Ю": Result := ".";
 else
   Result := C;
 end;

 {Вариатн конвертации Leonid Troyanovsky (не удалять): }
 {var
    vk: Word;
    buf: array [0&#1331] of Char;
    kbs: TKeyboardState;
  begin
    vk := VkKeyScan(Key);
    GetKeyboardState(kbs);
    ToAsciiEx(vk, MapVirtualKey(vk, 0), kbs, buf, 0, $04090409);
    Key := buf[0];
   end;}
end;


Обрати внимание на комментарии.


 
@!!ex ©   (2007-12-17 12:24) [5]

> [4] Kolan ©   (17.12.07 12:21)

Мне наоборот надо. :)
А чем лучше [2]?
Ведь тут жесткая привязка к раскладке...


 
Kolan ©   (2007-12-17 12:31) [6]

> А чем лучше [2]?

Ничем, даже хуже.


 
Правильный_Вася   (2007-12-17 15:15) [7]

> array [0Գ] of Char;
это че за знак?
или это новый синтаксис объявления массива?


 
Anatoly Podgoretsky ©   (2007-12-17 15:26) [8]

> Правильный_Вася  (17.12.2007 15:15:07)  [7]

Синтаксис старый, символ новый.


 
Правильный_Вася   (2007-12-17 16:10) [9]

и что он означает? бесконечность, что ли?


 
Kolan ©   (2007-12-17 16:12) [10]

> и что он означает? бесконечность, что ли?

Спроси сначала как его набрать :)


 
Юрий Зотов ©   (2007-12-17 18:06) [11]

Это так называемый полудинамический массив. То есть, размер задан, но какой - непонятно.



Страницы: 1 вся ветка

Текущий архив: 2008.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
2-1197872493
К. Павел
2007-12-17 09:21
2008.01.13
Сдвинуть данные в массиве.


15-1196867544
timekiller
2007-12-05 18:12
2008.01.13
Вся темнота из консоли


15-1196956916
Германн
2007-12-06 19:01
2008.01.13
И что это было?


15-1197011581
TUser
2007-12-07 10:13
2008.01.13
ICQ-рассылки


15-1197218888
Grain
2007-12-09 19:48
2008.01.13
Выборы грядут!