Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Windows Message in einer Klasse (https://www.delphipraxis.net/47715-windows-message-einer-klasse.html)

Bunke5 16. Jun 2005 10:15

Re: Windows Message in einer Klasse
 
So hab es jetzt hinbekommen, ich habe auf die falsche Windows-Message gelauscht. Die Windows_Message "WM_INPUTLANGCHANGE" geht immer an das Fenster welches den Fokus hat, aber Button und andere Steuerelemente sind für das Betriebssystem auch Fenster, daher hat immer der Button die Nachricht bekommen. Man muß auf WM_INPUTLANGCHANGEREQUEST lauscht diese Botschaft geht an die Anwendung die den Fokus hat.

the-networker 29. Jun 2006 14:31

Re: Windows Message in einer Klasse
 
Ich habe versucht das Ergebnis, des Dialoges zwischen Euch
nachzustellen, funktioniert nur wenn kein Button etc. auf der Form liegt.
Kann mir jemand sagen was noch verkehrt ist?

Gruß
Uwe

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TSprache = class(TWinControl)
  private
  public
    procedure KeyboardChange(var Message: TMessage);message WM_INPUTLANGCHANGEREQUEST;
  end;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen } 
   
  public
    { Public-Deklarationen } 
    Sprache: TSprache;
    procedure WndProc(var Message : TMessage);override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 

procedure TSprache.KeyboardChange(var Message: TMessage);
begin
  Showmessage('OK'
              );
end;


procedure TForm1.WndProc(var Message : TMessage);
begin
  if Message.Msg = WM_INPUTLANGCHANGEREQUEST then
    begin
    Sprache.KeyboardChange(Message);
    end;
  inherited wndproc(Message);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Sprache := TSprache.Create(Form1);
  Sprache.Parent := Form1;
end;



end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz