Once my main Panorama6 conversion was mostly working I started adding
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
endnoshows 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
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
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
endnoshow blocks for just one database at a time, updating the display before
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?
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
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
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.