Once my main Panorama6 conversion was mostly working I started adding noshow
/endnoshow
to try to speed it up. I’d learned in Pan6 to add it last, or at least late, as it makes debugging harder and my results weren’t always as expected. Apparently I’m still misunderstanding something as I managed to produce some goofy display problems in PanX. A datasheet only displayed an outline. The active form wouldn’t display its red, yellow and green buttons. Additional windows, including Formula Workshop, wouldn’t open. A showvariables
statement didn’t update their displayed values although a nsnotify
verified their values had updated. Usually quoting and relaunching PanoramaX would restore normal behavior, but similar problems would recur. Somehow I was turning off and not properly restoring the display. I removed, or commented out, the noshow
/endnoshow
s and normalcy resumed. But I still want the speed gains I’d expect from using noshow correctly. I understand speed gains will vary with what I’m doing; some statements are slower but only update the screen once at their end—no extra display changes from which to gain. Some actions update the display often and may speed up dramatically under noshow
. I decided to read up before attempting it again!
I’ve searched help and the forum on noshow
and come up with a few more specific questions.
Mostly the Help and examples cited in the forum mention ending a noshow
/endnoshow
block with showpage
followed by endnoshow
. Mostly that is what I’ve been doing. However I note the Help for the old Show
statement states it is now identical to “endnoshow
followed by show page
.” Which statement order is correct?
Panorama has multiple show this or that options to redraw only what you’d just changed. That might save of time when the rest of the display hasn’t changed, but I’m importing new data, sorting and formulafilling fields, sometimes summarizing, adding, renaming or deleting fields. Endnoshow
turns on display of new changes, but doesn’t update for old changes. Is showpage
always the correct option to update everything or is some other statement appropriate? I’ve mostly used showpage
, but I saw where Jim had used showother "",99
someplace, read but didn’t fully understand its help, and boldly decided to try it in a few places, either instead of or in addition to showpage
.
What is the scope of a noshow
statement? Is it for all of PanoramaX or just for the current database, window or procedure? Does it cover newly opened databases after it’s invoked? I’ve intended to use noshow
/endnoshow
blocks for just one database at a time, updating the display before setactivedatabase
, window
or farcall
statements then issuing new nowshow
statements but may have missed some db changes in the past.
If a database will be closed by a procedure must its display be updated before closing it? How about before saving it? Or can it just be closed during noshow
without an extra step?
I’ve noticed Save
statements interfere with noshow
. If a Save
statement immediately follows a noshow
statement what display changes follow are shown. If I move the Save
statement to just before the noshow
statement what follows isn’t displayed. That seems reproducible, so I’ve tried to endnoshow
prior to Save
then noshow
again.
Reviewing the forum reminded me of BitBucket #725, which I’d forgotten. If I have a hidden field, and try to make it current procedurely, I receive an error statement. But if running under noshow I can make a hidden field current then perform a formulafill on it accurately, without error message or crash. Whether doing more to that hidden field might eventually cause a crash and whether that contributed to my display oddities I don’t know.
In converting my procedures I’d periodically received error messages stating I couldn’t do something because of a field being hidden. I wasn’t sure just what couldn’t be done with hidden fields, so I would put in showallfields
statements to avoid it. Can you do anything with a hidden field—that does’t require it to be the current field—or are their additional limitations on their use? I’ll want to hide
/show
fields eventually, but first wanted to get the basic code working. I did spot in the forums that showallfields
statements within a noshow/endnoshow block do nothing. Since reading that and #725 the code I’ve reviewed has all had showallfields
statements preceding any noshow
statements, but I haven’t reviewed all of it. I’ll be watching for potential hidden field problems going forward.