Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


@!!ex ©   (2007-12-16 16:41:00) 

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


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

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


Kolan   (2007-12-17 16:12:00) [2]

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

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


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

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


Anatoly Podgoretsky   (2007-12-17 15:26:00) [4]

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

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


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

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


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

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

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


@!!ex   (2007-12-17 12:24:00) [7]

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

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


Kolan   (2007-12-17 12:21:00) [8]

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

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Գ] 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:03:00) [9]

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

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


Leonid Troyanovsky   (2007-12-17 09:59:00) [10]


> @!!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.


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо