![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Отказаться от использования этого флага.
|
|
#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, которая будет смотреть, если координаты принадлежат кнопке - отправляет их кнопке, остальные блочит (флаг отключения активности придется убрать). |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Giku (27.05.2012)
| ||