Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Events überwachen (https://www.delphipraxis.net/168085-events-ueberwachen.html)

Xate 4. Mai 2012 09:22

Events überwachen
 
Moin,

ich habe z. Z. die Aufgabe, für ein Programm mit extrem vielen Formularen eine Art Benutzerlog zu erstellen.
Wenn ein Benutzer einen bestimmten Button auslöst, dann soll die Buttoncaption und der Formularname gespeichert werden.

Ich muss also alle Buttonevents vor dem eigentlichen ausführen abfangen und dementsprechend verarbeiten.
Eventuell könnte der Spaß mit TApplicationEvents klappen, allerdings habe ich absolut keine Idee, wie genau ich diese Komponente verwenden soll.
TELHook lässt sich leider nur einem Objekt zuweisen, wäre allerdings ansonsten perfekt.

Hat jemand von euch eine Idee? Wie würdet ihr so etwas umsetzen?

// Der Quellcode liegt mir natürlich vor und ist mit Delphi 2005 gebastelt worden :)

himitsu 4. Mai 2012 09:43

AW: Events überwachen
 
Delphi 5 und TApplicationEvents ... wo hast'n das her? :gruebel:

Nja, wenn nicht, dann Application.OnMessage

Und dann entweder den Debugger oder eine Logdatei bemühen und schauen was für Events wann dort durchrauschen
WM_LBUTTONUP
CN_COMMAND + BN_CLICKED (TButton.Click)
usw.

Xate 4. Mai 2012 09:48

AW: Events überwachen
 
Ich habe hier Borland Delphi 2005 Architect.
Ich bemühe dann mal das OnMessage Event. Danke für den Tipp!

Xate 4. Mai 2012 10:37

AW: Events überwachen
 
Wie kann ich denn explizit auf einen ausgelösten Button reagieren?!
BN_Clicked wird auch ausgelöst, wenn ich auf den Taskbareintrag klicke.
Benutze ich wie jetzt WM_COMMAND oder CN_COMMAND, wird die Variable t nie gefüllt.


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Button1ClicktEvent'+'___:'+t);                                                                                
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if msg.message = WM_COMMAND then
  begin
    if msg.wparam = BN_CLICKED then
      t := TimeToStr(now);
  end;
end;

himitsu 4. Mai 2012 10:44

AW: Events überwachen
 
Msg.hwnd auswerten?
Beim OnMessage kommen natürlich alle Messages vorbei, welche über die MessageQueue des Hauptthreads laufen.

Tipp: Delphi-Referenz durchsuchenFindControl

SirThornberry 4. Mai 2012 12:30

AW: Events überwachen
 
Alternativ könnte man auch eine neue Komponenten von TButton ableiten und TButton projektweit durch den Nachfahren ersetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.

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