If MyProcedure and any methods it calls do not really reference the Self instance, then you will not run into runtime errors. However, this is a risky game. All that is required is to make some changes in the future, not knowing about this problem, and introduce the territory of behavior undefined. You may encounter runtime errors, or you may not. And the compiler will not save you.
You do not want to risk it. Therefore, since your method does not reference the instance, do not make it an instance method.
type TMyClass = class class procedure MyProcedure(Sender : TObject); end;
Instead, make a class method. This way you avoid the risk and the compiler will save you if at some point in the future you try to access the instance.
David heffernan
source share