Grade nochmal in XE5 und XE6 getestet:
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.
Hier nochmal ein kurzes Beispiel:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses System.Classes;
type
TMyThread = class(TThread)
protected procedure Execute(); override;
end;
TThreadHelper = class helper for TThread
public procedure helperStuff();
end;
procedure TThreadHelper.helperStuff();
begin
//
end;
procedure TMyThread.Execute();
begin
while not Terminated do helperStuff();
// Würde angezeigt:
// (self as TThread).helperStuff();
end;
begin
//
end.
Ist das so gewollt? Wenn ja, warum?
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.