Several TMS components create forms behind the scenes to achieve some ingenious functionality. But this code often makes assumptions about the underlying application. For example, FormStyle fsStayOnTop does not play well with PopupMode pmAuto. fsStayOnTop and PopupParent are trying to accomplish the same thing in different ways and do not play well together.
In several places, we've replaced "FormStyle := fsStayOnTop" with this code:
if Application.ModalPopupMode = pmNone then
FormStyle := fsStayOnTop
else begin
if Self.Parent = nil then
PopupParent := Screen.ActiveForm
else
PopupParent := GetParentForm(Self);
end;
I don't know that this is the best approach. It may be idea to surface a property or event that allows us to specify a PopupParent. Sometimes the PopupParent would be known at design-time sometimes not. For our application, the code above does very well.
The problem is that I have to maintain these overrides and re-insert them each time we update to TMS's latest versions. Which means we don't update very often...