Okay,
das dürfte etwas länger werden... eigentlich aber sehr einfach zu verstehen...
Zuerst brauchen wir eine Globale Variale vom Typ "TList".
MemoList : TList;
Dann müssen wir beim Programmstart (OnFormCreate) etwas speicher dafür anfordern.
MemoList := TList.Create;
Damit wir wirklich sauber Programmieren geben wir den Speicher am Programmende (OnFormDestroy) wieder frei.
MemoList.Free;
Okay, jetzt baut man sich eine Prozedur, womit man Tabs hinzufügt.
Delphi-Quellcode:
PROCEDURE NewWindow(WindowName:String);
VAR NewTabSheet:TTabSheet; NewMemo:TMemo;
BEGIN
NewTabSheet := TTabSheet.Create(MainForm); // speicher auf dem Formular "MainForm" anfordern
WITH NewTabSheet DO BEGIN
PageControl := MainForm.PageControl; // das Tab dem PageControl zuweisen
ShowClose := TRUE;
Caption := WindowName; // als kleines Extra kann man hier noch den Namen seperat bestimmen
END;
NewTabSheet.OnClose := WindowOnClose; // die OnClose Funktion muss rein für das Freigeben des Speichers
NewMemo := TMemo.Create(MainForm); // speicher auf dem Formular "MainForm" anfordern für das neue Memo
MemoList.Add(NewMemo); // der virtuellen Liste das neue MemoFeld hinzufügen
WITH NewMemo DO BEGIN
Parent := NewTabSheet; // so wird das Memo auf dem neuen TabSheet plaziert.
// Platz für weitere Eigenschaften, wie Größe etc.
END;
END;
Okay, nun hat man ein neues Tab erstellt, nun noch eine Speicher Prozedur:
Delphi-Quellcode:
PROCEDURE Save;
VAR Memo : TMemo;
BEGIN
Memo := MemoList.Items[PageControl.ActivePageIndex]; // nun wird die Variable Memo mit dem Inhalt des Memos gefüllt was gerade aktiv ist
IF SaveDialog.Execute
THEN Memo.Lines.SaveToFile(SaveDialog.FileName); // einfache Speichermöglichkeit
END;
Okay, das wars, du bräuchtest noch ein OnClose, damit du den Speicher nicht zuknallst,
aber mach dich erstmal hier rann ;-) Wenn Fragen sind ich antworte gerne :-)