Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Раскладка клавиатуры. [D5, WinXP]


JohnKorsh ©   (2007-01-18 11:11:00) 

Не поможет ли кто грамотно отловить сообщение. Всю жизнь за меня это делал 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;

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


JohnKorsh   (2007-01-19 09:51:00) [1]

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


Elen   (2007-01-19 09:43:00) [2]


> Извините, а если есть время, то часть кода с отловом 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:39:00) [3]

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


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

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

Да, я WM_INPUTLANGCHANGEREQUEST ловлю


Джо   (2007-01-18 16:25:00) [5]

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

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


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

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


Elen   (2007-01-18 12:53:00) [7]


> Не "пищит".

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


MBo   (2007-01-18 12:52:00) [8]

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


JohnKorsh   (2007-01-18 12:32:00) [9]

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


Elen   (2007-01-18 12:17:00) [10]


> JohnKorsh

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо