22-V-1998.

Well, well... it seems I got this idea of scrollable containers long ago, and a whole year before I went to implement it. Here's from the UA:

>Our application requires several pages of data to be entered from a loan application form. In order to accomodate all of the data, we have nested page frames that the user will access by clicking next and previous buttons. However, the customer requires the application be written for 640 x 480 resolution which increases the number of pages tremendously. We are looking for alternative ways to handle this large amount of data. Any suggestions?

I've done things like that in FPD - I've had a window in a window, where the inner window was actually larger than the window it was seen through. In the When function of each field I've checked its position (an easy task in VFP now, and in FPD I've eased it on myself by using array variables, and extracted the index from varr() function), and moved the inner window so the field is visible.

What I'd try to do in this situation would be a creation of a tall pageframe within a normal sized pageframe, and having all controls in it call a custom method in GotFocus, and this method would just make sure the control is within the visible portion of the inner frame, and adjust its position if necessary. I just wish days were 48 hours long, maybe I'd do it myself then.

...OK, OK, I had to try it. I've played around the form designer for some fifteen minutes, and it simply works like a charm - I've added a pageframe to a form, clicked Edit, added another pageframe, selected its Page1 (I've set .pagecount=1, .tab=.f. to both outer and inner pageframe) and added a couple of controls. Then I've started changing the inner frame's .top from -9 to 4, and watched it swing up and down. The inner frame is some four times taller than the outer one. Now writing such a method for the form is a piece of cake - it should set

* form.scrollPage method
Lparameter ThisControl
ThisForm.Pageframe1.Page1.Pageframe1.top=-thiscontrol.top+45

...or something like that (needs playing around - 45 pixels from the top seemed a good distance to start with). Each object should pass a reference to itself as a parameter. Of course, the playing around should include writing some check to see if Thiscontrol is already in the visible part of the page, to avoid unnecessary scrolling. You may want to add some slider control, or buttons to access various regions of this form. Have fun all day, but I feel the result will be far more useful (and require less clicking on the user's side) than having multiple pages.

Gee, I like this :) One of those days when fox surprises you, or rather you surprise yourself with how much you can do with just a little bit of code. You don't even need a 48-hour day.

Perhaps it was this spring when we were trying to get Lena to pronounce R. We heard her pronounce it fine and dandy (the slavic hard way, and serbian is among the toughest in that league), but she just refused to use in speech. Much later she confessed she had trouble not with pronunciation as such, but with which one to use when - which l should be a r and which should stay an l. This time she went to the older sisters' room, and Go was playing "Saucerful of secrets", with all those space sounds, and that spaceship drum approaching from infinity. She left the room and said "Go does some hollible music - Pink Froyd". A meme with "Pink Freud" circled the webs as soon as end of january 2020...


Mentions: fox, Gorana Sredljević (Go), Jelena Sredljević (Lena), UbiquAgora (UA), in serbian