AGB  ·  Datenschutz  ·  Impressum  







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

Alle Komponenten in Groupbox löschen

Ein Thema von Dreas · begonnen am 2. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
Dreas

Registriert seit: 7. Nov 2003
17 Beiträge
 
#1

Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 18:21
Hi,

ich habe eine Groupbox, in der ich dynamisch versch. Ergebnisse einer Berechnung anzeige.
Dabei handelt es sich um edit- und labelfelder. Diese werden während der Laufzeit erzeugt.
Parent ist die GroupBox mit Namem Ergenbnis.
Beim klicken auf einen button werden die Ergebnisse angezeigt.
Nun kann ich aber nur einmal auf den butten klicken, weil die Felder nicht mehrfach erzeugt werden können.
Was muss ich an den Anfang der button-click Procedure schreiben, damit alle Komponenten in der GroupBox erstmal gelöscht werden, bevor daraufhin neue erstellt werden?

Ich habe
Code:
form1.Ergebnis.DestroyComponents;
probiert. Geht aber nicht. Nun weiß ich nicht weiter...
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 18:23
Hast du auch das hier getan?dynLabel.Parent := Form1.GroupErgebis;
  Mit Zitat antworten Zitat
Dreas

Registriert seit: 7. Nov 2003
17 Beiträge
 
#3

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 18:49
Hmmm, da kann ich jetzt ehrlich gesagt nicht viel mit anfangen.
Wofür ist das denn gut?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 18:53
Was Dax meint ist folgendes:
Jede deiner dynamisch erzeugten Komponenten müssen in der Eingenschaft "Parent" die GroupBox gesetzt haben. Dann sollte es eigentlich funktionieren.
Wofür das gut ist?
Dadurch weiß die GroupBox, welche untergeordneten Komponenten zu ihm gehören. (Parent <-> Child).
Peter
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 18:54
OK, jetzt weiss ich, wo dein Problem liegt: Du solltest deine Subcomponents (also die Labels) so erstellen:dynLabel := TLabel.Create(Ereignis); So wird dem Label "gesagt", das es zu der Box gehört. Wenn du nun Ereignis.DestroyComponents aufrufst, zerstört es alle Subcomponents der Box.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.838 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 20:26
Zitat von Dreas:
ich habe eine Groupbox, in der ich dynamisch versch. Ergebnisse einer Berechnung anzeige.
Dabei handelt es sich um edit- und labelfelder. Diese werden während der Laufzeit erzeugt.
Parent ist die GroupBox mit Namem Ergenbnis.
Den Parrent zu setzen reicht nicht !!!
Der Parent gibt "nur" an das die Komponente in dem Comtainer gezeichnet werden soll.

Der Owner gibt an wem die Komponente gehört.
Der Owner wird beim Create angegeben.

Delphi-Quellcode:
  ...
  l := TLabel.Create(Form1);
  l.Parent := Ergebnis;
  ...
  Ergebnis.DestroyComponents; // bringt nichts !!!
  ...

  l := TLabel.Create(Ergebnis);
  l.Parent := Ergebnis;
  ...
  Ergebnis.DestroyComponents; // jetzt klappts !!!
  ...
[edit]
ups, hallo Dax, habe Deine Antwort gar nicht gesehen
Sorry für den unnötigen Post
[/edit]
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Alle Komponenten in Groupbox löschen

  Alt 2. Dez 2004, 20:33
Sorry. Ihr habt natürlich recht .
Ich sollte nicht mal eben auf die schnelle auf sowas antworten. Bitte lasst Gnade walten.
Peter
  Mit Zitat antworten Zitat
Dreas

Registriert seit: 7. Nov 2003
17 Beiträge
 
#8

Re: Alle Komponenten in Groupbox löschen

  Alt 6. Dez 2004, 13:23
Danke, dass ihr alle so schnell geantwortet habt.

Es hat geklappt.

Vorher hatte ich eine Komponente so erzeugt:
Code:
TLabel.Create(Ergebnis).Name := 'LGewinn';
with tlabel (findcomponent('LGewinn')) do begin
left:=links[1];
top:=oben[1];
caption:='Ihr Gewinn beträgt:';
parent:=Ergebnis;
Jetzt habe ich es so gemacht, wie Ihr geschrieben habt (var dynl:tlabel):
Code:
dynl:=TLabel.Create(Ergebnis);
dynl.Parent:= Ergebnis;
dynl.left:=links[1];
dynl.Top:=oben[1];
dynl.caption:='Ihr Gewinn beträgt:';
Danke nochmal an alle für die Hilfe!

p.s. Wünsche einen schönen Nikolaustag
  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 03:36 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