AGB  ·  Datenschutz  ·  Impressum  







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

Alle Tabs eines PageControls schließen

Ein Thema von kingflo · begonnen am 8. Jun 2005 · letzter Beitrag vom 9. Jun 2005
Antwort Antwort
Seite 1 von 3  1 23      
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 14:34
Hallo ich möchte gans gerne alle Tabs meines Page controls schließen bis auf das erste Tab.

Ich hatte da auch was gemacht und das funzt nicht ich bekomme dann einen Zugriffsfehler aber ich weiß nicht warum.

Eigentlich müsste das so funktionieren

Delphi-Quellcode:
begin
 // don't close the first tab
 PageControl3.ActivePageIndex:=PageControl3.PageCount-1;
 while PageControl3.ActivePageIndex > 0 do
 begin
 if PageControl3.ActivePageIndex > 0 then
 begin
    if PageControl3.ActivePage.Controls[0] is TSynEdit then
    begin
      // Free
      (TSynEdit(PageControl3.ActivePage.Controls[0])).free;
      HTMLEDIT := nil;
      // Free active Tab
      PageControl3.ActivePage.Free;
    end;
    PageControl3.ActivePageIndex:=PageControl3.ActivePageIndex-1;
  end;
  end;
  PageControl3Change(html);
end;
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#2

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:24
hi!

warum machst du es dir so umständlich, würds nicht auch so gehn?

Delphi-Quellcode:
var
  i: Integer;

begin
  i := PageControl1.PageCount -1;
  If i <= 0 then exit;
  repeat
    PageControl1.Pages[i].Destroy;
    Dec(i, 1);
  until PageControl1.PageCount = 1;
end;
Natürlich musst du dein PageControl anpassen
Durch aufrufen von Destroy werden alle auf der Seite des PageControl abgelegten Kompos gleich mit zersört/speicher freigegeben.

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#3

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:28
mmmm stimmt so gehts natürlich auch danke
Florian Gilde
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:30
NIEMALS!!!! .Destroy direkt aufrufen -
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#5

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:32
stimmt ersetze destroy durch free
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#6

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:32
Zitat von barf00s:
NIEMALS!!!! .Destroy direkt aufrufen -
Warum nicht? Klar ist Free sicherer, aber NIEMALS?????
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:40
Also für noch besser halte ich es die Tabs nicht zu löschen, sondern sie bestehen zu lassen und sie nur aus dem PageControl zu entfernen:
Delphi-Quellcode:
var
  i: Integer;

begin
  i := PageControl1.PageCount -1;
  If i <= 0 then exit;
  repeat
    PageControl1.Pages[i].PageControl:=nil;
    Dec(i, 1);
  until PageControl1.PageCount = 1;
end;
Benjamin
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#8

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:41
Den Code kann man aber noch verbessern:
Zitat von phlux:
Delphi-Quellcode:
var
  i: Integer;
begin
  i := PageControl1.PageCount -1;
  If i <= 0 then exit; // kannst du dir bei ner for-Version sparen
  repeat
    PageControl1.Pages[i].Destroy; // besser Free nehmen, is sicherer
    Dec(i, 1); // die 1 kannst du dir sparen, das is default
  until PageControl1.PageCount = 1;
end;
ich würde das so machen:
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := PageControl1.PageCount -1 downto 1 do
  begin
    PageControl1.Pages[i].Free;
  end;
end;
mfg

Christian

//Edit: Hilfe. Ich bin ja viel zu spät! Ich dachte DP hätte n eingebauten "Schutz" gegen sowas. Jedenfalls bakam ich sonst als die Nachricht, dass zwischendurch gepostet wurde
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#9

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:45
Free is nich sicherer als Destroy

aber Free sorgt dafür das alle möglichen speicherbereiche und deinitialisierungs routinnen vom object aufgerufen werden und als letztes .Destroy aufruft
- ums mal ganz einfach auszudrücken

sicher könnte man .destroy auch direkt aufrufen, aber es wird dann vllt der speicher nicht freigegeben und kann so zu memleaks führen </klugscheiß>
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#10

Re: Alle Tabs eines PageControls schließen

  Alt 8. Jun 2005, 15:47
Zitat von BenjaminH:
Also für noch besser halte ich es die Tabs nicht zu löschen, sondern sie bestehen zu lassen und sie nur aus dem PageControl zu entfernen:
Delphi-Quellcode:
var
  i: Integer;

begin
  i := PageControl1.PageCount -1;
  If i <= 0 then exit;
  repeat
    PageControl1.Pages[i].PageControl:=nil;
    Dec(i, 1);
  until PageControl1.PageCount = 1;
end;
Du hällst es für besser Speicherleichen zu produzieren? Genau das machst du damit nämlich IMHO.
Werden die Tabs denn dann noch vom PageControl gefreed, wenn sie ausm PageControl entfernt sind?

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:20 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