Moin Red Dragon,
was mir auffällt:
Beim Schliessen korrgierst Du Dein Pages Array nicht.
Das enhält dann ja einen ungültigen Eintrag.
Wozu dient das überhaupt? Im PageControl ist ja schon ein TabSheet Array enthalten.
Öffnen könntest Du ja so machen:
Delphi-Quellcode:
procedure TForm1.NewTabsheet;
var
tsWork : TTabSheet;
begin
tsWork := TTabSheet.Create(PageControl1);
tsWork.PageControl := PageControl1;
tsWork.Caption := 'Neu Datei';
with TSynEdit.Create(tsWork) do begin
Align := alClient;
Gutter.ShowLineNumbers := true;
Parent := tsWork;
end;
PageControl1.ActivePageIndex := PageControl1.pagecount-1;
end;
Schliessen dann so wie gehabt,allerdins solltest Du noch prüfen, ob überhaupt noch ein Tabsheet da ist, das geschlossen werden könnte.
Funktionen wie kopieren so:
Delphi-Quellcode:
procedure TForm1.Kopieren1Click(Sender: TObject);
var
cmpWork : TComponent;
iIndex : integer;
begin
for iIndex := 0 to PageControl1.Pages[PageControl1.ActivePageIndex].ComponentCount-1 do begin
if PageControl1.Pages[PageControl1.ActivePageIndex].Components[iIndex] is TSynEdit then begin
(PageControl1.Pages[PageControl1.ActivePageIndex].Components[iIndex] as TSynEdit).CopyToClipboard;
break;
end;
end;
end;