AGB  ·  Datenschutz  ·  Impressum  







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

Alle Elemente in Frame löschen

Ein Thema von ManuKILLED · begonnen am 10. Sep 2012 · letzter Beitrag vom 16. Sep 2012
Antwort Antwort
ManuKILLED

Registriert seit: 24. Aug 2012
16 Beiträge
 
#1

Alle Elemente in Frame löschen

  Alt 10. Sep 2012, 09:40
Delphi-Version: 5
Hey Leute,

ich hab mal wieder ein Problem.
Ich möchte alle Elemente aus einem Frame löschen, das Frame beinhaltet Label und Comboboxen...

Das einzige, was ich bisher gefunden habe ist:

Delphi-Quellcode:
for i := 0 to Form1.Frame21.componentcount-1 do begin
        if Form1.Frame21.components[i] is TComboBox
        then with Form1.Frame21.components[i] as TComboBox do begin
          hide;
        end ;
        if Form1.Frame21.components[i] is TLabel
        then with Form1.Frame21.components[i] as TLabel do begin
          hide;
        end ;
Leider funktioniert das nur mit .Hide und nicht mit .Destroy :/

Bei .Destroy kriege ich den Fehler, dass der Listenindex das Maximum überschreitet.

Mit besten Grüßen
Manu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Alle Elemente in Frame löschen

  Alt 10. Sep 2012, 09:43
Beim Löschen die Schleife von oben nach unten ausführen, da das Löschen die Grenzen verschiebt.

Besser Free statt Destroy
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Alle Elemente in Frame löschen

  Alt 10. Sep 2012, 10:06
for i := XXX to YYY do
Die Werte für XXX und YYY werden vor dem Ausführen der Schleife ausgewertet und zwischengespeichert, damit

Beim Löschen entfernst du etwas aus der Liste, womit sich alles ab dieser Stelle um 1 nach vorne verschiebt.
Also das Ende YYY würde bei jedem Löschen um 1 kleiner, aber da es zuschengespeichert ist, lies du irgendwann hinter dem Ende, außerdem überspringst du Einträge, denn da der Index (i) beim Löschen weiterwandert, aber da sich alles vorgeschoben hat, wird der Eintrag nach dem Löschen übersprungen.

Man kann mit einer While-Schleife arbeiten, wo die Abbruchbedingung bei jedem Durchgang ausgewertet und nicht zwischengespeichert wird. (das mit dem Überspringen mußt du da aber ebenfalls beachten)

Oder man geht eben rückwärts durch die Schleifen, da sich ja nur hinten was ändert und nicht vor der jeweils aktuellen Position.
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 haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

AW: Alle Elemente in Frame löschen

  Alt 16. Sep 2012, 09:28
Moin...

falls es noch von Relevanz ist... rufe einfach DestroyComponents deines Frames auf und schwupps ist alles leer.
  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 10:39 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