Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi PageControl - Problem (https://www.delphipraxis.net/114057-pagecontrol-problem.html)

Tommy1988 19. Mai 2008 17:39

Re: PageControl - Problem
 
Ok,
meinen Code habe ich jetzt komplett angepasst, jedoch erhalte ich beim "STRG+S"-Drücken eine Exception, Zugriffsverletzung an dieser Stelle:
"if (FActiveMemo.FileName <> '') then"
Ich kann keinen Fehler erkennen?

geskill 19. Mai 2008 18:21

Re: PageControl - Problem
 
Okay,
das dürfte etwas länger werden... eigentlich aber sehr einfach zu verstehen...

Zuerst brauchen wir eine Globale Variale vom Typ "TList".

Delphi-Quellcode:
MemoList : TList;
Dann müssen wir beim Programmstart (OnFormCreate) etwas speicher dafür anfordern.

Delphi-Quellcode:
MemoList := TList.Create;
Damit wir wirklich sauber Programmieren geben wir den Speicher am Programmende (OnFormDestroy) wieder frei.

Delphi-Quellcode:
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 :-)

geskill 19. Mai 2008 20:10

Re: PageControl - Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Okay,
ich habe dir jetzt noch ein Beispiel geschrieben...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz