Is it possible to override the WmSysCommand procedure using a class helper and only importing the FormHelper.pas unit into the other units?
No. For one, because of the error you already found. 'message' dispatching simply doesn't work with a helper class. But also, because
WMSysCommand() is not a virtual method, but even if it were, a helper class can't override a virtual method anyway.
So, there is simply no avoiding having to catch the
WM_SYSCOMMAND message in each Form individually, and then delegating to the desired handler. If you want to consolidate your handler across multiple Forms, create a base class derived from
TForm, and then derive your Forms from that base class as needed.