Opitah se da napravq taka, che moqta programa da ima vuzmojnostta da pokazva kirilica, bez da e instalirana suotvetnata klaviatura (razchitam samo na Multilanguage support-a). Eto kak izglejda koda:
procedure TfmMain.edtInputKeyPress(Sender: TObject; var Key: Char);
var
i: Integer;
const
bulBDS: array[0..31] of Char = (
'd', '/', 'l', 'h', 'o', 'e', 'g', 'p', 'r', 'x',
'u', '.', ';', 'k', 'f', 'm', ',', 'i', 'j', 'w',
'b', 'n', '[', '''', 't', 'y', 'c', 'q', 'a', 'v',
'z', 's');
begin
for i := 0 to 31 do
if AnsiLowerCase(Key) = bulBDS[ i] then
begin
Key := Chr(224 + i);
Break;
end;
end;
Pod Windows 9x/ME vurvi dobre, no sega kato go testvah na XP vidqh, che ima problem (veroqtno neshtata stoqt po-sushtiq nachin i pod NT/2000). Vupreki, che sum si naglasil System locale na BG, mi izlizat bukvite s udareniqta. Predpolagam Windows-a proverqva kakvo pokazva language indicatora i tui kato toi si e na English pokazva bukvite ot latinskata tablica. Probvah SetThreadLocale(1026) i estestveno nqmashe rezultat. Charset-a na Edit-a mi e naglasen na RUSSIAN, no estestveno i tova ne okazva nikakvo vlianie na XP-to. Nqkoi seshta li se za nachin , po koito da go izluja
Blagodarq predvaritelno
PS Awe tova [ i] shto pak pravi problemi na [ pre] !?
|