Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klasse um etwas ergänzen (https://www.delphipraxis.net/93622-klasse-um-etwas-ergaenzen.html)

BenjaminH 8. Jun 2007 12:18


Klasse um etwas ergänzen
 
Hallo,
ich habe eine Funktion, die als Parameter ein TControl erwartet, um dann etwas damit zu machen.
Delphi-Quellcode:
procedure ControlFadeIn(Control: TControl);
Jetzt denke ich mir, dass es zweckmäßiger ist, das als Methode eines Objekts zu haben. Allerdings sollte das bei jedem Control auf meiner Form funktionieren:
Delphi-Quellcode:
Panel.FadeIn;
GroupBox.FadeIn;
usw
Meine Idee war, diese:
Delphi-Quellcode:
TControl = class(Controls.TControl)
  published
    procedure FadeIn;
  end;
Hat nicht wirklich den gewünschten Effekt, d.h. keinen, der Aufruf von Panel.FadeIn wird als undefinierter Bezeichner angekreidet.
Gibt es einen Weg, wie ich die Klasse TControl um meine Methode ergänzen kann, sodass alle Nachfahren auch diese Methode haben? Class Hacks sind keine Option!

Viele Grüße,
Benjamin

Hawkeye219 8. Jun 2007 12:41

Re: Klasse um etwas ergänzen
 
Hallo Benjamin,

Zitat:

Class Hacks sind keine Option!
Ich hoffe, du meinst keine Class Helper:

Delphi-Quellcode:
type
  TControlHelper = class helper for TControl
  public
    procedure FadeIn;
  end;

procedure TControlHelper.FadeIn;
begin
  ShowMessage ('Hello from ' + ClassName);
end;
Danach verfügen alle TControl-Nachfolger über die neue Methode.

Hier noch ein interessanter Artikel zum Thema "Class Helper".

Gruß Hawkeye

[edit=Phoenix]Url korrigiert. Die hatte sich wohl geändert. Mfg, Phoenix[/edit]

BenjaminH 8. Jun 2007 12:50

Re: Klasse um etwas ergänzen
 
Boah das ist ja eine wunderschöne Lösung! Genau so habe ich mir das Vorgestellt :firejump:
Danke!
Nur die IDE macht das nicht so toll, sobald ich for schreibe will er mir hier eine Schleife andrehen.
Egal, trotzdem geil.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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