Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memos zur laufzeit erzeugen und in *.ini abspeichern (https://www.delphipraxis.net/48326-memos-zur-laufzeit-erzeugen-und-%2A-ini-abspeichern.html)

DannyK.II 23. Jun 2005 16:53


Memos zur laufzeit erzeugen und in *.ini abspeichern
 
Tag,

in meinem Programm soll amn in der Lage sein, Tabs (während der Laufzeit) zu erzeugen / löschen. In diesen Tabs befinden sich Memo - Felder, die mit ihnen erzeugt / gelöscht werden.

Das ist alles kein Problem, funktioniert einwandfrei.

Ich möchte den Text der Memo - Felder bei onChange und onCloseQuery in einer ini Datei speicher. Dazu bräuchte ich den Namen des Memos (musst ja memoX.lines.text speichern).
Die Namen sollten aus Tabname (gibt der Benutzer selbst) + _memo bestehen.

Wenn ich das über:

Code:
NewTabSheet.name := tabname+'_memo';
mache, gibts an der Stelle einen DICKEN Fehler. (Kann auch sein, dass ich zu doof bin).
Wie gebe ich also dem Memo den entsprechenden Namen? Den brauch ich ja, um das ganze in der ini zu speichern...

Wäre schön, wenn ihr mir helfen könntet :coder2:

marabu 23. Jun 2005 17:07

Re: Memos zur laufzeit erzeugen und in *.ini abspeichern
 
Nimm TabSheet.Caption für deine Namensspiele.

Zitat:

Zitat von Borland
Ändern Sie den Wert der Eigenschaft Name auf keinen Fall zur Laufzeit. Daraus könnten sich Laufzeitfehler ergeben.

Grüße vom marabu

DannyK.II 24. Jun 2005 14:44

Re: Memos zur laufzeit erzeugen und in *.ini abspeichern
 
Und wie sprech ich dann die Memofelder an?? welchen namen haben die denn dann?
Ich muss den ja ahben um z.B. memoXYZ.lines.text aufzurufen.

dahead 24. Jun 2005 14:54

Re: Memos zur laufzeit erzeugen und in *.ini abspeichern
 
Hallo,

ich würde dir empfehlen einen dynamischen Array zu verwenden, den du mit den daten aller tabsheets füllst. du könntest beispielsweise den Array Index mit TTabsheet.Tag verlinken.

über TPageControl.GetActivePage oder TPageControl.GetActivePageIndex (Integer) kriegst du dann die aktuelle Seite. diese musst du dann nur noch mit deinem array abgleichen (also ob akt. ausgewählte seite in array, wenn ja dann gelinktes TMemo speichern).

marabu 24. Jun 2005 16:31

Re: Memos zur laufzeit erzeugen und in *.ini abspeichern
 
Zitat:

Zitat von DannyK.II
Und wie sprech ich dann die Memofelder an??

Ist doch die einzige Komponente auf dem TabSheet, also kannst du sie so ansprechen:

Delphi-Quellcode:
var
  ts: TTabSheet;
  memo: TMemo;
begin
  with PageControl do begin
    // PageControl.OnChanging()
    ts := Pages[TabIndex];
    memo := ts.Controls[0] as TMemo;  

    // PageControl.OnChange()
    memo := ActivePage.Controls[0] as TMemo;
  end;
Solltest du mehrere Komponenten auf einer Page haben, dann kannst du durch das Controls-Array iterieren und auf Controls[i] is TMemo testen. Für die Methode PageControl.ActivePage.FindChildControl() bräuchtest du allerdings dann den Namen deines aktuellen Memos.

Ich würde an deiner Stelle nur ein einziges Memo instanziieren und im Ereignis PageControl.OnChange() dieses Memo dann auf der richtigen Page einblenden.

Delphi-Quellcode:
Memo.Parent := PageControl.ActivePage;
Grüße vom marabu

DannyK.II 24. Jun 2005 17:19

Re: Memos zur laufzeit erzeugen und in *.ini abspeichern
 
das letze wäre natürlich am allereinfachsten. dann lad ich den text aus der ini zusammen mit dem onchange :) vielen danke allen


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.

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