“How can I show multiple columns in certain cases, then revert back to a single column in other cases in the same report?”
Use x number of child subreports to act as each column, and a single full width subreport to act as the single column. Then toggle the visibility of each subreport based on how many columns you would like to display for that particular detail.
Sample Delphi code:
procedure TForm1.ppDetailBand1BeforePrint(Sender: TObject);
//Show two columns every other detail band.
lbVisible := ppDetailBand1.Count mod 2 = 0;
ppSubreport1.Visible := lbVisible;
ppSubreport2.Visible := lbVisible;
ppSubreport3.Visible := not(lbVisible);