AGB  ·  Datenschutz  ·  Impressum  







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

Komponenten-Container

Ein Thema von LoL · begonnen am 6. Okt 2004 · letzter Beitrag vom 6. Okt 2004
Antwort Antwort
LoL
(Gast)

n/a Beiträge
 
#1

Komponenten-Container

  Alt 6. Okt 2004, 14:30
hallo zusammen

ich komme mal wieder auf das leidige Thema Komponenten zur Laufzeit zurück. kann ich Komponenen die ich zur Laufzeit erstellt habe irgendwie in einen Art "Container" einschließen, quasi einen Parent, so dass wenn man den "Conainter" frei gibt auch alle darin enthaltenen Komponenten frei gegeben werden?
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Komponenten-Container

  Alt 6. Okt 2004, 14:35
Hallo,

Natürlich. Du kannst als Owner der Komponente z.B. eine Panele angeben.

Delphi-Quellcode:
  edEinEdit := TEdit.Create(EinePanele);
  edEinEdit.Parent := EinePanele;
Wenn du die Panele jetzt freigibst, ist edEinEdit auch im Nirvana verschwunden.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#3

Re: Komponenten-Container

  Alt 6. Okt 2004, 14:41
hmm.. ich hab mich warscheinlich undeutlich ausgedrückt.

Beispielsweise habe ich ein Edit das hat den Parent des Forms ein Edit das hat das Parent eines Panels.
jetzt will ich die beide löschen und zwar nicht in dem ich sie beide einzeln freigebe sondern in dem ich den "Container" lösche in den die beiden Edits liegen.
Die Edits haben also nicht den gleichen Parent!
Geht sowas?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Komponenten-Container

  Alt 6. Okt 2004, 14:51
Hi Christoph,

mal sehn ob ich dich richtig verstanden habe. Du hast ein Edit, das auf einem Form liegt, und ein anderes Edit, welches auf einem Panel liegt.
Nun willst du dass beide freigegeben werden, sobald deren Container (also bei einem das Form, beim anderen das Panel) freigegeben werden?
Der Parent hat damit nichts zu tun, vielmehr ist der Owner hier von Bedeutung (also die Komponente, die du beim Create angibst). Du kannst also durchaus folgendes schreiben:
Delphi-Quellcode:
einEdit := TEdit.Create(Form1);
einEdit.Parent := Panel1;
Nun wird einEdit freigegeben, sobald Form1 zerstört wird, nicht sobald Panel1 zerstört wird. Wird Panel1 zerstört, so wird das Edit einfach nicht mehr angezeigt.
Ich hoffe dich richtig verstanden zu haben

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#5

Re: Komponenten-Container

  Alt 6. Okt 2004, 14:58
korrekt ich war der voll idiot

Delphi-Quellcode:
var e1,e2 : TEdit;
    main : TComponent;

procedure TForm1.Button1Click(Sender: TObject);
begin
  main := TComponent.Create(form1);

  e1 := TEdit.Create(main);
  e1.Parent := form1;

  e2 := TEdit.Create(owner);
  e2.Parent := panel1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  main.Free;
end;
hab vergessen main zu erstellen! siehe code
Nochmal THX@all
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Komponenten-Container

  Alt 6. Okt 2004, 15:02
Was auch möglich ist: Die Komponenten in einer Delphi-Referenz durchsuchenTComponentList zusammenfassen und dann bei Bedarf einfach die Liste freigeben.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#7

Re: Komponenten-Container

  Alt 6. Okt 2004, 15:03
ich schaus mir an danke
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Komponenten-Container

  Alt 6. Okt 2004, 16:38
Moin Zusammen,

oder mal kurz zusammengefasst:

Der Owner entscheidet über die Lebensdauer des Controls.
Wird der Owner zerstört, werden auch alle Controls zerstört, die mit diesem Verbunden sind.
Sonderfall: Man gibt als Owner nil an. In diesem Falle muss man sich selber um das Freigeben des Controls kümmern.

Der Parent entscheidet über die Position und Sichtbarkeit des Controls, da ein Control immer relativ zu Parent angezeigt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 02:45 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