![]() |
Ein 'KeyDownEvent'-Ereignis...in eine andere Unit auslagern
Hallo Leute,
um meine FormUnit etwas übersichtlicher zu gestalten, möchte ich gern die Ereignisse 'KeyDownevent' für Editfelder und 'Clickevent' für dynamisch erstellte Labels in eine 2.Unit auslagern und diese dann einbinden:
Delphi-Quellcode:
Habt ihr einen Ansatz, oder müssen diese Events in der Formunit bleiben?
{OnKeyDown Methode - den Edits im Objektinsp. zugewiesen}
procedure TForm1.EditKeyDownEvent(Sender:TObject; var Key: Word; Shift: TShiftState); begin if (Sender is TEdit)and(Key=VK_Return) then begin LblColorSwap; Label9.Top:=TEdit(Sender).Top; Label9.Caption:= '<- Focus'; Edit1.maxlength :=5; Edit2.maxlength :=5; if (Sender =Edit1)and (length(Edit1.text)=5) then ... ... {das Klick Ereignis} procedure TForm1.ClickEvent(Sender: TObject); begin if (Sender is TLabel) then with TagArray[(Sender as TLabel).Tag] do begin LblTmp:=TNum; Label1.Caption:= inttostr(TNum); Label2.caption:='TagArray.Anw: '+ Anw; Label3.Caption:='TagArray.abwBegin: '+ abwBegin; Label4.Caption:='TagArray.abwEnde: '+ abwEnde; Label5.Caption:='TagArray.abwZeit: '+ abwZeit; Label10.Caption:='TagArray.TgName: '+ TgName; Label13.Caption:= inttostr(WerkTag)+'. Werktag'; Edit1.Text:=abwBegin; Edit2.Text:=abwEnde; Edit3.Text:=abwZeit; Edit4.Text:=Anw; end; LblColorSwap; end; |
Re: Ein 'KeyDownEvent'-Ereignis...in eine andere Unit ausla
Wenn ich nicht irre, ist es wurscht, in welcher Unit sie stehen, aber es müssen Methoden sein.
|
Re: Ein 'KeyDownEvent'-Ereignis...in eine andere Unit ausla
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:
So die Richtung.
// 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
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