SynMemo1.SelText := StringReplace(SynMemo1.SelText, #13#10, #13#10#9, [rfReplaceAll]);
Jedes Vorkommen von Carriage-Return wird durch Carriage-Return + Tabulator ersetzt.
Kleines Problem dabei:
nach der letzten selektierten Zeile wird ebenfalls ein Tab eingefügt.
Dann evtl. so:
Delphi-Quellcode:
tmp := StringReplace(SynMemo1.SelText, #13#10, #13#10#9, [rfReplaceAll]);
Delete(tmp, Length(tmp), 1); // letztes TAB wech
SynMemo1.SelText := #9 + tmp;