Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1280922687
mylasthit
2010-08-04 15:51
2010.10.31
Управление скролом в RichEdit


15-1279991329
SaveVideo
2010-07-24 21:08
2010.10.31
Не получается сохранить это видео


2-1281421021
admax_
2010-08-10 10:17
2010.10.31
ускорение цикла


15-1279851394
defen
2010-07-23 06:16
2010.10.31
Контроль приложения с помощью сервиса


2-1280993419
12
2010-08-05 11:30
2010.10.31
Что-то глючит, AV непонятно-плавающий.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский