Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Ein 'KeyDownEvent'-Ereignis...in eine andere Unit ausla

  Alt 28. Jul 2009, 19:48
Man kann prinzipiell Ereignishandler aus Units nehmen die nicht zum Formular gehören, nur ist das recht unübersichtlich auf Dauer. Zudem müssen diese dann auch "procedure of object", also eben Methoden sein, und somit in eine Klasse eingebettet werden. Wenn man das aber schon tun muss, wäre es die sauberere Lösung die Eventhandler in der Formular-Unit zu belassen, und in diesen dann als Einzeiler die ausgelagerten Methoden einer Helferklasse aus einer anderen Unit aufrufen zu lassen. Um diese Helferklasse nicht instanziieren zu müssen bieten sich da statische Methoden an ("class procedure/function").


Delphi-Quellcode:
// Unit1
TMyForm = class(TForm)
  procedure OnMouseClick(Sender: TObject);
private
public
end;

implementation

uses
  Unit2;

procedure TMyForm.OnMouseClick(Sender: TObject);
begin
  {Unit2.}TMyFormHelper.OnMouseClick(Sender);
end;

//-------------------

// Unit2
TMyFormHelper = class
private
public
  class procedure OnMouseClick(Sender: TObject);
end;

implementation

class procedure TMyFormHelper.OnMouseClick(Sender: TObject);
begin
  // was beim Klick passiert
end;
So die Richtung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat