Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi direktive "message" (https://www.delphipraxis.net/39587-direktive-message.html)

Pseudemys Nelsoni 4. Feb 2005 19:35


direktive "message"
 
hi,

wie funktioniert das ganze mit der "message" direktive? kann ich damit nachrichten prozefuren überschreiben die an das fenster gesendet werden?

ich hab mal folgendes versucht:

Delphi-Quellcode:
procedure WMSetFocus(var msg: TWMSetFocus); message WM_SETFOCUS;

...

procedure TForm2.WMSetFocus(var msg: TWMSetFocus);
begin
  ShowMessage('hi');
end;
es wird beim entern in mein richedit aber keine message angezeigt :(

sniper_w 4. Feb 2005 19:48

Re: direktive "message"
 
Zitat:

wie funktioniert das ganze mit der "message" direktive? kann ich damit nachrichten prozefuren überschreiben die an das fenster gesendet werden?
Ja, das kannst du. In deinem Beispiel wird die Nachrich für eine Instance des Types "TForm2" behandelt und keine Instance von "TEdit".

Pseudemys Nelsoni 4. Feb 2005 20:06

Re: direktive "message"
 
hm,

wie kann ich denn ein setfocus für ein richedit abfangen? (mit "message")

Robert_G 4. Feb 2005 20:11

Re: direktive "message"
 
Natürlich indem du den Handler in einem Nachfahren von TRichEdit implementierst. ;)
Delphi-Quellcode:
type TMiep = class(TRichEdit)
  procedure WMSetFocus(var msg: TWMSetFocus); message WM_SETFOCUS;
end;

sniper_w 4. Feb 2005 20:39

Re: direktive "message"
 
Delphi-Quellcode:
type
  TmyRichEdit = class(TRichEdit)
   procedure WMSetFocus(var msg: TWMSetFocus); message WM_SETFOCUS;
  end;

  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    REdit : TmyRichEdit;
  end;

var
  Form1: TForm1;
  done : boolean = false;

implementation

{$R *.dfm}

procedure TmyRichEdit.WMSetFocus(var msg: TWMSetFocus);
begin
 inherited;

 if not done then
        begin
         Application.MessageBox('Und jetzt ist die schon ausgeführt.','FOCUS MESSAGE');
         done := true;// damit nur einmal diese Meldung kommt
        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 REdit := TmyRichEdit.Create(self);

 with REdit do
 begin
  Parent := Self;
  Align := alLeft;
  Visible := true;
 end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 REdit.Free;
end;
Es sollte genug selbserklärend sein.

Robert_G 4. Feb 2005 20:57

Re: direktive "message"
 
Was war an meiner Erklärung weniger verständlich? :gruebel:
PseudoDingsbums ist ja nicht so doof wie sein Nickname. :zwinker: :mrgreen:

sniper_w 4. Feb 2005 21:11

Re: direktive "message"
 
Ich wollte nur auf die Nummer sicher gehen.. :wink: :???:

Pseudemys Nelsoni 4. Feb 2005 21:59

Re: direktive "message"
 
moin,

danke sniper/robert ;) Mit anderen Worten, ich muss eine klasse von TRichEdit ableiten, damits klappt, das weusst ich nicht ;)


Zitat:

PseudoDingsbums ist ja nicht so doof wie sein Nickname.
das ist aber nicht nett :!: *g*

schöni 21. Mär 2011 20:23

AW: direktive "message"
 
Hallo,

und was bewirkt die Message Direktive:

hier:

Delphi-Quellcode:
procedure WMxxxxxxx(var Msg: TWMxxxxxxxx); [B]Message WM_xxxxxxxxx;[/B]

himitsu 21. Mär 2011 21:19

AW: direktive "message"
 
Wird eine Message mit dieser ID an das Handle des entsprechenden TWinControl gesendet, dann wird diese Methode aufgerufen.
Aber zuerst kommt die Message bei
Delphi-Quellcode:
procedure WndProc(var Message: TMessage); override;
vorbei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz