Помогите с распознованием введённого текста

Тема в разделе "Delphi - FAQ", создана пользователем Rendll, 17 фев 2009.

  1. Rendll

    Rendll Гость

    Уважаемые программисты, подскажите как сделать контроль раскладки клааивтуры. У меня есть программма текстовый редактор, в ней нужно сделать возможность отображать язык ввода текущего текста. Тоесть мы вводим в Richedit текст, буквы, и во время того как вводим, оно в статус баре или в одельном поле выводит текущий язык ввода. Пожалуйсто в примерах еси можна. И если возможно, то сделать переключатель языка, русс--> англ.
     
  2. Poseidon

    Poseidon Гость

    Возможно

    Код (Text):
    function ChangeLayout(LANG: Integer): Boolean;
    var
    Layouts: array [0..16] of HKL;
    i, Count: Integer;
    begin
    Result:=False;
    Count:=GetKeyboardLayoutList(High(Layouts)+1, Layouts)-1;
    for i:=0 to Count do if (LoWord(Layouts[i]) and $FF) = LANG then
    Result:=ActivateKeyboardLayout(Layouts[i], 0)<>0;
    end;
    Использование

    Код (Text):
    ChangeLayout(LANG_RUSSIAN);
    ChangeLayout(LANG_ENGLISH);

    Текущий язык системы можно получить так:

    Код (Text):
    function WhichLanguage:string;
    var
    ID: LangID;
    Language: array [0..100] of char;
    begin
    ID := GetSystemDefaultLangID;
    VerLanguageName(ID, Language, 100);
    Result := string(Language);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Edit1.Text := WhichLanguage;
    end;
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Poseidon, спасибо большое за код, я сам такое долго искал, потому как с функцией LoadKeyboardLayout было толку ноль. А вот узнать язык системы - не работает, всегда пишет что Русский. Хотя судя по коду это не название текущего языка, а это язык по умолчанию, возможно так оно и должно быть.
     
  4. Poseidon

    Poseidon Гость

    Так тебе нужен язык раскладки клавиатуры? Так бы и сказал.

    Код (Text):
    function GetActiveKbdLayout : LongWord;
    begin
    result:= GetKeyboardLayout(0) shr $10;
    end;
    Думаю сделать ассициации возвращаемый_результат = раскладка сможешь сам.
     
Загрузка...

Поделиться этой страницей