Noshow help requested


#1

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/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 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.