I have a large, complicated form and just added two buttons to it. I saved it, closed it and opened it again and all of the controls were wiped out except for two group boxes. Does anybody have any idea why this would have happened? I've checked the backed up version of the form back in and tried it several times. If I add any two controls to the form, this happens.
The form had 98 controls on it and its record in the Repository was about 42K when the controls got wiped out.
Fred-
I've seen and experienced this- it usually occurs when you are saving a form that your making changes to. If you look at the SYSREPOSWINS record in the editor, you'll find that the first field contains some stray characters, but the the form is intact.
Compare the form to an existing one (or study the window structure) and get rid of/replace the offending characters. The window should work. You may need to manually reconnect some of your event handlers.
I've never seen them to be the same in two occurrances, although this has only happened to me about 5 times in the last 7 years.
Mike
ps- I received your call, but I'm teaching classes (Arev, OI, OI-]Web) this and next week. Drop me an email? [email protected]
Thanks
I don't see anything weird in my SYSREPOSWINS file. It looks almost identical to the old one. The only weird thing I found was a - in Field 3, Value 5 of the record (it says -3).
Fred,
I believe that -3 should be the x coordinate of the upper left corner of your window. So if you had your window going a bit beyond the left side of the screen last time you saved it that explains the -3.
(You haven't saved your SYSREPOSWINS row in System Editor? That can sometimes damage a window row.)
- Oystein -
By the way, I've seen references to something called the 115 limit. What is that? Is that what we're experiencing here? We only have 98 controls on the form when it tanks out.
Fred
In counting 98 are you including things like group boxes etc? There is a limit of 115 controls of any type per window which might explain the behaviour you are seeing.
World Leaders in all things RevSoft
Fred,
Sprezzatura might be right. In addition to what they mention you could have made invisible controls you forgot to count. Or controls accidentally put beyond the window's border.
The easiest way to count is to take System Editor, open the SYSREPOSWINS row for the window, and count fields (lines). (It's safest just to look, so don't save the row.)
Start counting at the fourth line.
Stop counting before you reach the ÿMENU… line towards the end.
Note there is a case where the data for a control will be broken into several lines by the System Editor. This happens with static (text) controls with CR LF in them. (In this case saving the row will destroy the contents.)
- Oystein -
Why count when you can look at row position two? This tells you how many controls there are.
Don,
I think he ought to use as much time counting as I to write the posting. That's only fair. Hope he counted before he read your response.
![]()
- Oystein -
I counted the fields in the SYSREPOSWINS record and I wrote a program to get the CTRLMAP property of the window and count the fields. Everywhere the count is 96 (that's before adding two more controls and getting everything wiped out).
What am I missing?
Fred,
My guess is the same as Mike's (I think) - that the SYSREPOSWINS row has some local damage, derailing Form Designer when trying to interpret the content of the row. Or when writing the row back.
I think Mike specifically mentioned illegal characters. You haven't admitted to having any. But your last name makes me suspicious. If by any case you're German, go easy on those 's!
If you try to spot the error by inspecting the SYSREPOSWINS row with System Editor that might take as long time as redoing the window in Form Designer. Also you'd not be certain you managed to find and repair everything that was wrong.
If you're still bent on finding the error, you could of course extend that program of yours that uses CTRLMAP, to loop through all controls and get their ORIG_STRUCT. And see if the program crashes. Or perhaps let the program do some checks on what it finds. Or print it out. Or you can step and inspect with the Debugger.
Did you say how you added the two controls? I think I've had cases where pasting a control was problematic. (But not for a while.)
And I had a case where making the control (an edit table?) too small caused problems. (Also that was a long time ago.)
One clear-cut case I once had was when I changed a SYSREPOSWINS row in System Editor. If one is careless it's easy to damage the row. But so far you haven't admitted to doing that. In my case I wasn't really careless. The reason was what I hinted at in a different response: When the text of a static contains more than one line, the System Editor converts the CRLFs to @FMs, so the line (field) for that control gets chopped into bits (i.e, several crippled fields). It doesn't take more than saving the row. Then the damage is done. No careless changes necessary.
- Oystein -