Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Раскладка клавиатуры.   Найти похожие ветки 

 
JohnKorsh ©   (2007-01-18 11:11) [0]

Не поможет ли кто грамотно отловить сообщение. Всю жизнь за меня это делал Delphi, я только писал обработчики, а тут понадобилось отловить переключение раскладки и не выходит. Я делаю так:

 private
   { Private declarations }
   procedure Key_Layoyt_Cng (var a :TMessage); message WM_INPUTLANGCHANGE;

procedure TForm1.Key_Layoyt_Cng (var a :TMessage);
 begin
  ShowMessage (‘Done.’);
  Beep;
 end;

Не "пищит".
В чём ошибка?


 
Elen ©   (2007-01-18 12:17) [1]


> JohnKorsh

Может лучше WM_INPUTLANGCHANGEREQUEST?


 
JohnKorsh ©   (2007-01-18 12:32) [2]

Спасибо, но не помогло.


 
MBo ©   (2007-01-18 12:52) [3]

эти сообщения приходят контролу, имеющему фокус


 
Elen ©   (2007-01-18 12:53) [4]


> Не "пищит".

Не пишит, а тункает. После того как я нажимаю (в твоем коде) на OK в сообшении от  ShowMessage (‘Done.’);
пишать будет от windows.beep(1000,1000);


 
Игорь Шевченко ©   (2007-01-18 16:20) [5]

Ловить такое сообщение лучше всего через Application.OnMessage, если только не стоит цель отслеживать переключение у отдельных контролов


 
Джо ©   (2007-01-18 16:25) [6]

> [5] Игорь Шевченко ©   (18.01.07 16:20)
> Ловить такое сообщение лучше всего через Application.OnMessage,
> если только не стоит цель отслеживать переключение у отдельных
> контролов

Это сообщение (WM_INPUTLANGCHANGE) не должно, вроде, попадать в Application.OnMessage.


 
Игорь Шевченко ©   (2007-01-18 17:04) [7]

Джо ©   (18.01.07 16:25) [6]

Да, я WM_INPUTLANGCHANGEREQUEST ловлю


 
JohnKorsh ©   (2007-01-19 09:39) [8]

Извините, а если есть время, то часть кода с отловом message с помощью  Application.OnMessage можно,а?


 
Elen ©   (2007-01-19 09:43) [9]


> Извините, а если есть время, то часть кода с отловом message
> с помощью  Application.OnMessage можно,а?

Какие проблемы? Лови :

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, AppEvnts;

type
 TForm1 = class(TForm)
   procedure ApplicationEvents1Message(var Msg: tagMSG;
     var Handled: Boolean);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
if msg.message= WM_INPUTLANGCHANGEREQUEST then caption:=caption+"w";
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=ApplicationEvents1Message;
end;

end.


 
JohnKorsh ©   (2007-01-19 09:51) [10]

Спасибо. Заработало.



Страницы: 1 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1169032454
Hero
2007-01-17 14:14
2007.03.11
Где найти TDXOverlay в стандартной DelphiX нет


15-1171543920
vasIZmax
2007-02-15 15:52
2007.03.11
Поиск...


15-1171523923
sqler
2007-02-15 10:18
2007.03.11
HTML


1-1168612263
Cara
2007-01-12 17:31
2007.03.11
Сложная форма


4-1162327378
wp2
2006-10-31 23:42
2007.03.11
Как в библиотеке узнать какая ее вызвала программа?