----
I have no clue how to simulate a "TLF" application under design time conditions to accurately repro this
----
Basically, all you need is a top form, some user controls, and a READ EVENTS <g>.
FWIW here's the kind of code I would recommend -- this is what you'd see in the _output.outputToScreen method in the FFC _Reports.vcx (not in your version -- the preview situation took some settling in <s>):
CASE THIS.cOption == "GRAPHICAL"
ZOOM WINDOW (lcName) MAX
IF SET("REPORTB") = 90 AND ATC("NOWAIT",lcClauses) = 0
lcClauses = lcClauses + " NOWAIT "
ENDIF
REPORT FORM (THIS.cReport) PREVIEW &lcClauses
IF ATC(" NOWAIT ",lcClauses) > 0 AND ;
TYPE("THISFORM") = "O" AND ;
THISFORM.WindowType = 1
RELEASE THISFORM
ENDIF
CASE ...
... the IF/ENDIF constructs here are the only new code.
Notice I'm not worrying about "is this a top form app" here, even though _output has the capability to determine top form-ness at any point, and even though _framework apps (which leverage _output) definitely have top form capabilities.
This is because, in the main, topform-ness isn't all that relevant to the real issue, although top forms always make stuff worse <g>. The real issue is "we have a real form now for report preview, how will we make it work and play well in an app environment". There are many, many, many permutations.
>L<