![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() на форме только две кнопки (меняют раскладку)
изза procedure CreateParams они НЕ работают (функция запрещает форме принимать фокус) как решить проблему??? Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button: TButton; Button1: TButton; procedure ButtonClick(Sender: TObject); procedure Button1Click(Sender: TObject); private procedure CreateParams(var Params: TCreateParams); override; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE; end; procedure TForm1.ButtonRUClick(Sender: TObject); begin LoadKeyboardLayout('00000409', KLF_ACTIVATE); end; procedure TForm1.ButtonENClick(Sender: TObject); begin LoadKeyboardLayout('00000419', KLF_ACTIVATE); end; end. |
#2
|
||||
|
||||
![]() Отказаться от использования этого флага.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() как по другому можно смениь язык ?
без процедуры програматеряет смысл |
#4
|
||||
|
||||
![]() Если в системе только 2 языка то можно ограничится и одной кнопкой с такой реализацией:
Код:
ActivateKeyboardLayout(HKL_NEXT, 0); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Giku (27.05.2012)
|
#5
|
|||
|
|||
![]() Цитата:
программа редназначена на все случаи жизни да и вопрос не о том, ведь Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button: TButton; procedure ButtonClick(Sender: TObject); private procedure CreateParams(var Params: TCreateParams); override; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE; end; procedure TForm1.ButtonClick(Sender: TObject); begin ActivateKeyboardLayout(HKL_NEXT, 0); end; end. тоже не работает все дело в процедуре CreateParams она нужна, только как это все совместить ??? |
#6
|
||||
|
||||
![]() А как можно нажимать на кнопки, если вся форма не активна, а кнопки принадлежат ей?
![]() Как вариант, заблокировать всё на форме, кроме кнопок. Или написать свою WndProc, которая будет смотреть, если координаты принадлежат кнопке - отправляет их кнопке, остальные блочит (флаг отключения активности придется убрать). jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Giku (27.05.2012)
|