Форум: "Начинающим";
Текущий архив: 2010.10.31;
Скачать: [xml.tar.bz2];
ВнизРусская раскладка в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c