![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Раскладка клавиатуры. [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?