![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Русская раскладка в D2010 [WinXP]
pvr © (2010-08-07 18:57:00)В D2006 и более ранних версиях я писал:
ActivateKeyboardLayout(LoadKeyboardLayout('00000419', 0), 0);
В результате приложение работало с активной русской раскладкой. Если создавалось диалоговое окно, то и в нём автоматически была русская раскладка.
В D2010 при создании главного окна я вновь выполняю тот же оператор, и раскладка становится русской. Беда в том, что в созданных диалогах раскладка английская. Более того, как я ни пытался применить свой оператор в разных обработчиках событий, раскладка не переключалась, а при закрытии диалога в главной форме остаётся английская раскладка.
Как победить эту напасть?
pvr (2010-08-10 22:03:00) [1]Что-то, кроме примера, придуманного ИШ, ничего больше гладко не работает. Одно утешение - проект, подправленный для D2010, без единого изменения компилируется и в D2006. А там всё работает, как ожидается.
Спасибо за сочувствие.
pvr (2010-08-09 21:39:00) [2]Спасибо, Игорь. Я не догадался создать с нуля.
В моём случае на самом деле диалог наследуется. Кроме того, в нём фреймы. Попробую завтра, на каком этапе перестаёт работать "наследование" раскладки.
Игорь Шевченко (2010-08-09 21:12:00) [3]
> Может, ещё будет какое предложение?
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 19:54:00) [4]Короче, проверка возвращаемых значений не помогла. И без проверки раскладка в диалоге становилась английской, и с проверкой, которую предложил Игорь, она тоже становится английской.
Может, ещё будет какое предложение? Я с благодарностью рассмотрю.
pvr (2010-08-09 19:48:00) [5]Кстати, в 2006-м в обработчике FormCreate диалога фукции LoadKeyboardLayout и ActivateKeyboardLayout возвращают те же значения $4190419 и $4190419. Но там мне и не приходилось их вызывать, потому что в диалоге оставалась русская раскладка.
pvr (2010-08-09 19:28:00) [6]Ну, если кому ещё интересно, то обработчике FormCreate диалога LoadKeyboardLayout возвращает $4190419, а ActivateKeyboardLayout тоже возвращает $4190419.
pvr (2010-08-09 19:11:00) [7]Функция LoadKeyboardLayout возвращает, как ей и положено, $4190419, а функция ActivateKeyboardLayout возвращает, как ей и положено, $4090409.
После их выполнения раскладка становится русской.
Когда же я создаю диалоговое окно, раскладка становится английской. Вопрос и состоит в том, как сделать, чтобы раскладка в диалоге оставалась русской.
(2010-08-09 19:07:00) [8]Удалено модератором
Anatoly Podgoretsky (2010-08-09 19:06:00) [9]
> Я проверяю.
Врешь.
Palladin (2010-08-09 17:44:00) [10]
> Я проверяю.
Никто здесь не видит что ты проверяешь и как ты проверяешь. Что вернула функция LoadKeyboardLayout ? А функция ActivateKeyboardLayout ?
12 (2010-08-09 17:41:00) [11]To get extended error information, use the GetLastError function.
Smile (2010-08-09 17:35:00) [12]Тебя не просят рассказать, о том что в диалоговом окне раскладка становится английской, а советуют анализировать код возврата функции. Но похоже, что это напоминает разговор слепого с глухонемым
:(
pvr (2010-08-09 17:32:00) [13]Я проверяю. В главном окне всё так же, как и в D2006. Но когда создаю диалоговое окно, раскладка становится английской.
Palladin (2010-08-09 17:11:00) [14]Тебе посоветовали проверить значения возвращенные функциями. Что тут уморительного-то?
pvr (2010-08-09 17:09:00) [15]У кого-нибудь есть соображения?
pvr (2010-08-09 16:12:00) [16]Ну, уморил Игорь! Как бы сделал вид, что... как бы ответил...
Игорь Шевченко (2010-08-07 19:31:00) [17]как бы каждая из перечисленных функций имеет возвращаемое значение...его как бы неплохо проверять...