AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches erstellen von Tabsheets und Memos

Ein Thema von p80286 · begonnen am 20. Okt 2010 · letzter Beitrag vom 20. Okt 2010
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Dynamisches erstellen von Tabsheets und Memos

  Alt 20. Okt 2010, 15:39
Hallo zusammen,

Ich habe eine Anwendung, die ihre Logdateien über mehrere Verzeichnisse verteilt. Also schnell ein Form mit einem Pagecontrol erstellt.
Für jede gefundene Logdatei soll jetzt auf dem Pagecontrol ein Tabsheet erstellt werden und auf jedem Tabsheet ein Memo.
Ich hab mir aus mehreren Beispielen meinen Source zusammengeklöppelt, aber ich werde das Gefühl nicht los, das er etwas suboptimal ist, vor allem was Parent und Owner angeht. Könntet Ihr bitte einmal darüber schauen und mich korrigieren:
Delphi-Quellcode:
var
   marr : array of tmemo;
   ll : tstringlist;

.....
  { ll enthält Dateinamen }
  if ll.count>0 then
    setlength(marr,ll.count-1);
    for i:=0 to ll.count-1 do begin
      with TTabSheet.Create(pagecontrol1) do begin
        PageControl := PageControl1;
        Caption := ll[i];
      end;
      marr[i]:=tMemo.Create(self);
      marr[i].parent:=pagecontrol1.pages[i];
      marr[i].Align:=alClient;
      marr[i].ScrollBars:=ssBoth;
      try
      marr[i].Lines.loadfromfile(ll[i]);
      except
      marr[i].text:='**** '+#13#10+
                    ll[i]+#13#10+
                    ' konnte nicht geöffnet werden'+#13#10+
                    ' **** '  ;
      end;
    end;
Das "Aufräumen" fehlt noch, da hab ich mir etwas in dieser Art vorgestellt:
Delphi-Quellcode:
for i:=0 to Pagecontrol1.pages.count-1 do
  Pagekontrol1.Pages[i].free; {mit automatischer Freigabe der Memos !? }
Vielen Dank
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dynamisches erstellen von Tabsheets und Memos

  Alt 20. Okt 2010, 15:43
Kann es sein, dass marr um 1 Element zu klein ist? Ansonsten ist mir nichts weiter aufgefallen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

AW: Dynamisches erstellen von Tabsheets und Memos

  Alt 20. Okt 2010, 15:50
Jupp, marr ist zu klein.

Und beim Löschen die Forschleife rückwärts laufen lassen oder Pages[0].Free; verwenden.

Das Memo wird freigegeben, wenn dessen Owner freigegeben wird.
Also für das Memo das TabSheet als Owner angeben.
tMemo.Create(pagecontrol1.pages[i]);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Dynamisches erstellen von Tabsheets und Memos

  Alt 20. Okt 2010, 17:03
Vielen Dank!
Fluppt wie gewünscht!
dieses ..count-1 hab ich glatt übersehen und in die Downtofalle wär ich wohl auch getappt

K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 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