There are a number of ways to do this. Here is an easy way to achive this:
Create a button on your primary layout with the following:
Go to Portal Row [select; first]
Set field [field_to_add_to; field_text_is_in & " " & field_to_add_to]
Go to Portal Row [Select; Next; Exit after last]
Commit Records/Requests [no dialog]
This should get you going :)
This can be done with a one line script, assuming layout is based on Letter and portal on textblcks.
Set Field [Letter::TextField ; List ( TextBlcks::TextBlockField)]
This will merge the contents of all text the the TextBlockField for all records shown in the portal (assuming it is unfiltered), each block will be separated by a return. Any related records with an empty TextBlockField will be omitted.
Hmmm, and on further thought, a script might not be needed at all.
A calculation field with:
List ( TextBlcks::TextBlockField)
would work without any script.
And you can even avoid the user of a calculation field (maybe) if you set up a list layout based on the portal's table with large text fields set to slide up and resize the enclosing part. This layout could be used to print/save as PDF and the result would look the same as your text field with the combined text blocks.