First, make it a DoublePass report.
This assumes the following order of printing (debug it to be sure) Memo1, Memo2, and Memo3, and all memos with align = alNone:
CODE
procedure Memo1OnAfterPrint();
begin
if Engine.FinalPass = false then
begin
Child2.stretch := true; // or: Child2.height := Memo1.height;
Memo2.top := Memo1.top;
Memo2.Height := Memo1.Height;
Memo2.left := Memo1.left;
Memo2.width := Memo1.width;
(repeat for memo3, here should be ok)
end;
end;
I didn't really run the above code, so if this doesn't work, it's because it may be the wrong event, you may need to pick another one (like Child2.OnBeforePrint),
one where the dimensions of Memo1 have already being set, and you still can change the dimensions of the other ones.