1. You will have to test this as each font has its own effective size. Also, are cr/lf in the memo field or is it just straight text ? You will have to use the current width and see how many characters fill that width to get your size per character.
2. You know the closest control to the text box. So you know its top value. Use this value combined with the text box's top value and height value to prevent overlap.
What you are essentially talking about is "brute-forcing" a formula to resize the entire form during the OnOpen event.
I had considered this. I was hoping there was an easier way, but I guess not.
However, during my experimentation, I have run into one problem. I can't seem to successfully resize the main window when it opens. I have auto-size turned on, I have tried setting the Details.Height during OnOpen, but no matter what I do, I can't seem to make the form window any larger than whatever size it was when I designed it with the visual editor.
I have just been doing some basic experimentation.
I understand what you are saying about changing the height of the textbox, and then recalculating the position of all of the other controls on the form.
The problem I was having proceeding with this theory, is say that when everything is the smallest it would be (1 line tall) the detail section of the form is approx 1" high, thus the form opens up in a small window, almost like a dialog box.
When I expand the height of the textbox during the onOpen event, though, I cannot get the size of the form window to change at all, it always opens about the size of a dialog box and then I have to either manually enlarge or maximize it.