Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.31;
Скачать: CL | DM;

Вниз

Русская раскладка в D2010   Найти похожие ветки 

 
pvr   (2010-08-07 18:57) [0]

В D2006 и более ранних версиях я писал:

 ActivateKeyboardLayout(LoadKeyboardLayout("00000419", 0), 0);

В результате приложение работало с активной русской раскладкой. Если создавалось диалоговое окно, то и в нём автоматически была русская раскладка.

В D2010 при создании главного окна я вновь выполняю тот же оператор, и раскладка становится русской. Беда в том, что в созданных диалогах раскладка английская. Более того, как я ни пытался применить свой оператор в разных обработчиках событий, раскладка не переключалась, а при закрытии диалога в главной форме остаётся английская раскладка.

Как победить эту напасть?


 
Игорь Шевченко ©   (2010-08-07 19:31) [1]

как бы каждая из перечисленных функций имеет возвращаемое значение...его как бы неплохо проверять...


 
pvr   (2010-08-09 16:12) [2]

Ну, уморил Игорь! Как бы сделал вид, что... как бы ответил...


 
pvr   (2010-08-09 17:09) [3]

У кого-нибудь есть соображения?


 
Palladin ©   (2010-08-09 17:11) [4]

Тебе посоветовали проверить значения возвращенные функциями. Что тут уморительного-то?


 
pvr   (2010-08-09 17:32) [5]

Я проверяю. В главном окне всё так же, как и в D2006. Но когда создаю диалоговое окно, раскладка становится английской.


 
Smile   (2010-08-09 17:35) [6]

Тебя не просят рассказать, о том что в диалоговом окне раскладка становится английской, а советуют анализировать код возврата функции. Но похоже, что это напоминает разговор слепого с глухонемым
:(


 
12 ©   (2010-08-09 17:41) [7]

To get extended error information, use the GetLastError function.


 
Palladin ©   (2010-08-09 17:44) [8]


> Я проверяю.

Никто здесь не видит что ты проверяешь и как ты проверяешь. Что вернула функция LoadKeyboardLayout ? А функция ActivateKeyboardLayout ?


 
Anatoly Podgoretsky ©   (2010-08-09 19:06) [9]


> Я проверяю.

Врешь.


 
имя   (2010-08-09 19:07) [10]

Удалено модератором


 
pvr   (2010-08-09 19:11) [11]

Функция LoadKeyboardLayout возвращает, как ей и положено, $4190419, а функция ActivateKeyboardLayout возвращает, как ей и положено, $4090409.
После их выполнения раскладка становится русской.

Когда же я создаю диалоговое окно, раскладка становится английской. Вопрос и состоит в том, как сделать, чтобы раскладка в диалоге оставалась русской.


 
pvr   (2010-08-09 19:28) [12]

Ну, если кому ещё интересно, то обработчике FormCreate диалога LoadKeyboardLayout возвращает $4190419, а ActivateKeyboardLayout тоже возвращает $4190419.


 
pvr   (2010-08-09 19:48) [13]

Кстати, в 2006-м в обработчике FormCreate диалога фукции LoadKeyboardLayout и ActivateKeyboardLayout возвращают те же значения $4190419 и $4190419. Но там мне и не приходилось их вызывать, потому что в диалоге оставалась русская раскладка.


 
pvr   (2010-08-09 19:54) [14]

Короче, проверка возвращаемых значений не помогла. И без проверки раскладка в диалоге становилась английской, и с проверкой, которую предложил Игорь, она тоже становится английской.

Может, ещё будет какое предложение? Я с благодарностью рассмотрю.


 
Игорь Шевченко ©   (2010-08-09 21:12) [15]


> Может, ещё будет какое предложение?


unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TfMain = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 end;

var
 fMain: TfMain;

implementation

uses DialogForm;

{$R *.dfm}

procedure TfMain.Button1Click(Sender: TObject);
begin
 with TfDialog.Create(Self) do
   try
     ShowModal;
   finally
     Free;
   end;
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
 ActivateKeyboardLayout(LoadKeyboardLayout("00000419", 0), 0);
end;

end.


unit DialogForm;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TfDialog = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
 end;

implementation

{$R *.dfm}

end.


В созданном диалоге в Edit1 вводятся русские буквы

D2010


 
pvr   (2010-08-09 21:39) [16]

Спасибо, Игорь. Я не догадался создать с нуля.

В моём случае на самом деле диалог наследуется. Кроме того, в нём фреймы. Попробую завтра, на каком этапе перестаёт работать "наследование" раскладки.


 
pvr   (2010-08-10 22:03) [17]

Что-то, кроме примера, придуманного ИШ, ничего больше гладко не работает. Одно утешение - проект, подправленный для D2010, без единого изменения компилируется и в D2006. А там всё работает, как ожидается.

Спасибо за сочувствие.



Страницы: 1 вся ветка

Текущий архив: 2010.10.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
3-1247144361
abhtr
2009-07-09 16:59
2010.10.31
Последняя запись в DBGride


11-1226148903
yXo
2008-11-08 15:55
2010.10.31
Не обрабатываются события KOL + Lazarus


2-1280939572
istok
2010-08-04 20:32
2010.10.31
навигация по TADOStoredProc...


15-1277731999
Marser
2010-06-28 17:33
2010.10.31
Встреча века


2-1280910476
aka
2010-08-04 12:27
2010.10.31
разбитие строки на по подсктроки через нужный сепаратор