For your #1 you may also use alines() to get the array of lines, and then scan the array and recreate the string while ignoring empty array values.
For your #2 you may set EditBox.READONLY=.t. and EditBox.Enabled=.t.
>I have forms with memo fields on them. I have several questions about using them.
>
>1. What is the best way to remove extra spaces between words, i.e. if I have
>
>this is a test
>
>
>skipped several lines (what viewer sees
>
so that it becomes
>
>This is a test skipped several lines
>
>Can I use some thing like
>
>cString = Thisform.editboxformemofield.value
>do while at( " ", cString ) > 0
> cString = strtran( cString, " ", " " )
>enddo
>Thisform.editboxformemofield.value = cString
>
>Could I just substitute "Thisform.editboxformemofield.value" for "cString" in the above
>
>do while at(...
>
>enddo
>
loop?
>
>
>2. How do I display a memo field (editbox) so that scroll bars are active (can scroll) to see more of the contents of the memo field but so that users cannot change it contents. I could create a full screen zoom form but that seems a bit much.