TurboRascal, as Theo says you can create a tab dynamically using aTPageControl which would have the same effect as a TDI, I will include some psuedo code to demonstrate:
procedure TfMain.newEditMemo(aName: string);
begin
Screen.Cursor := crHourGlass;
try
//create tabsheet to hold the memo , assign to the page control
newTabsheet := TTabSheet.Create(pcEditor);
newTabsheet.Parent := pcEditor;//PageControl
newTabsheet.Caption := aName;
//newTabsheet.Hint := Name;
fMain.ParentShowHint := False;
fMain.ShowHint := False;
fMain.Caption := MainCaption + newTabsheet.Caption;
newTabsheet.ImageIndex := 0;
newTabsheet.ShowHint := False;
newTabsheet.ParentShowHint := False;
newTabsheet.PageControl := pcEditor;
pcEditor.ActivePage := newTabsheet;
pcEditor.ParentShowHint := False;
// create Memo and align, set Properties
newMemo := TSynMemo.Create(newTabsheet);
newMemo.Parent := newTabsheet;
newMemo.Align := alClient;
newMemo.WantTabs := True;
newMemo.HideSelection := True;
newMemo.OnChange := @newMemoChange;
newMemo.OnDragDrop := @NewMemoDragDrop;
newMemo.OnDragOver := @NewMemoDragOver;
newMemo.ParentShowHint := False;
newMemo.ShowHint := False;
newMemo.PopupMenu := puEditor;
newMemo.Modified := False;
finally
Screen.Cursor := crDefault;
end;
end;