Содержание материала

Code:

//Дополнительные Переменные и функции

 

Const KZ_KBRD = $043f043f;//Дескриптор Казахской раскладки

                                              //В системе

 

//Функция Определяющая какой регистр использовать

//Данные обрабатываются в соответствии

//С состояниями клавиш от  клавиатуры

Function IsLow:Boolean;

var SHF,CPS_L : Boolean;

begin

REsult:=false;

SHF:= HiWord(GetAsyncKeyState(VK_SHIFT))>0;       //Зажат ли ШИФТ

CPS_L:=  0 <> (GetKeyState(VK_CAPITAL) and $01);   //Состояние CAPS_LOCK

if (SHF and CPS_L) then Result:=true;                        //пропись если ЗАЖАТЫ ОБЕ КЛАВИШИ

if (not SHF and not CPS_L) then Result :=true;        //Или наоборт

end;

 

//Функция конвертирующая КЛАВИШУ в СИМВОЛ

Function KeyToKZChar(Key:Integer;lowKey:boolean):Char;

Begin

result:=#0;             {Мальнькие }          {Большие}

case key of           {Символы}             {Символы}

50if LowKey then result:=chr(184) else Result:= chr(176);

51if lowkey then result:=chr(105) else Result:= chr(73);

52if lowkey then result:=chr(187) else Result:= Chr(179);

53if lowkey then Result:=chr(185) else Result:= Chr(177);

54if lowkey then result:=chr(190) else Result:= Chr(182);

55if lowkey then result:=chr(189) else Result:= Chr(181);

48if lowkey then result:=chr(186) else Result:= Chr(178);

189:if lowkey then result:=chr(188) else Result:= Chr(180);

187:if lowkey then result:=chr(191) else Result:= Chr(183);

end;

end;

 

 

{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

 

var LastKey :integer;             //Для хранения Последней клавиши

     LowKey :Boolean = true; //Верхний или нижний регистр.

 

 

//Проверяем как прога пишет на Казахском языке

 

//Вылавливаем клавишу для дальнейшей обработки

procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

LastKey := Key;

LowKey:=IsLow; //Сразу (на месте) определяем и сохраняем  регистр.

end;

 

 

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

Var tmpKey :char;

begin

if GetKeyboardLayout(0)=KZ_KBRD then //Если казахская раскладка то..

Begin

    tmpKey:=KeyToKZChar(LastKey,LowKey);// Получаем нужный символ

    if not(tmpKey = #0) then //Если  не стандартный символ то...

     Begin

      Key:=tmpKey;   // Указываем окну наш символ

      exit;  

  end;

end;

end;

 

//Дальше тоже самое только для компонента TMEMO

 

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

  LastKey:=key;

  LowKey:=IsLow;

end;

 

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

var tmpKey : char;

begin

if GetKeyboardLayout(0)=KZ_KBRD then

Begin

    tmpKey:=KeyToKZChar(LastKey,LowKey);

    if not(tmpKey = #0) then

     Begin

     Key:=tmpKey;

     exit;

     end;

end;

end;

 

 

//Можем сохранить наше творение в файл.

procedure TForm1.Button4Click(Sender: TObject);

begin

Memo1.Lines.SaveToFile('A.txt');

end;

 

//Или же наоборот загрузить из файла.

procedure TForm1.Button5Click(Sender: TObject);

begin

Memo1.Lines.LoadFromFile('A.txt');

end;

 

//Проба вывода на канвас разными методами.

procedure TForm1.Button3Click(Sender: TObject);

begin

pb.Canvas.Font.Name:='Times/Kazakh';

pb.Canvas.Font.Color:=clRed;

pb.Canvas.Font.Size:=14;

pb.Canvas.TextOut(10,10,Edit1.Text);

TextOut(PB.Canvas.Handle,30,30,Pchar(Edit1.Text),10);

end;

 

//Текст На компоненты

Edit3.Text:=Memo1.Text;

Button2.Caption:=Edit3.Text;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить