Thema: Delphi PageControl - Problem

Einzelnen Beitrag anzeigen

Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#12

Re: PageControl - Problem

  Alt 19. Mai 2008, 18:21
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 :-)
Sebastian
  Mit Zitat antworten Zitat