Главная страница
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.015 c
15-1196892873
Malik
2007-12-06 01:14
2008.01.13
Debug er


15-1196842140
kull
2007-12-05 11:09
2008.01.13
как преобразовать cfg в dof?


2-1197457525
Nil
2007-12-12 14:05
2008.01.13
Как правильно осовбодить контролы на StringGrid


15-1196844101
andreoman
2007-12-05 11:41
2008.01.13
как отследить изменение ширины колонки в DbAltGrid


8-1171869199
_iceman_
2007-02-19 10:13
2008.01.13
GDI & Antializing