Wenn man eine Helferklasse für bsp. TThread
bastelt und sich einen eigenen Thread TMyThread = class(TThread)
definiert lassen sich die Hilfsmethoden in jeder TThread
-Unterklasse verwenden. Von der Code Completion werden diese Methoden aber nur angezeigt wenn man eine TThread
-Referenz verwendet.
Wahrscheinlich haben da diejenigen, welche die Helper implementiert haben, nicht gut genug mit denjenigen kommuniziert, welche die Code Completion implementiert haben. Das funktioniert so bereits seit Delphi 2006 und FPC implementiert das ebenso
Zitat:
PS: Helferklassen können ja sogar voneinander erben. Ich kann nun einen TMyThreadHelper bauen der von TThreadHelper erbt und weitere Dinge einführt. Aber die Code Completion schlägt immer noch nichts vor.
Aber in Delphi nur Helper für Klassen. Bei Helpern für Records oder primitive Typen geht das nicht. (In FPC habe ich diese Einschränkung für alle anderen Modi außer Delphi auch aufgehoben
)
Wenn du mit Vererbung und Helpern spielst solltest du übrigens die folgenden beiden Punkte beachten:
- außerhalb eines Helpers wird zuerst nach einem Helper für die konkrete Klasse gesucht, danach in der Klasse selbst und als drittes wird dieses Spiel mit jeder Elternklasse fortgesetzt; das heißt. dass du in deinem TMyThread
Methoden haben kannst, die auch der TThreadHelper
hat, welche dann von letzterem nicht verborgen werden
- innerhalb eines Helpers ist die Suchlogik etwas obskur: zuerst wird im konkreten Helper gesucht (hier zum Beispiel TMyThreadHelper
), dann in der erweiterten Klasse. Als nächstes in den vererbten Helpertypen (ohne deren erweiterten Typ zu betrachten) und dann in den Elternklassen der erweiterten Klasse
Gruß,
Sven