AGB  ·  Datenschutz  ·  Impressum  







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

Element '' hat kein übergeordnetes Fenster

Ein Thema von Baeuerle · begonnen am 29. Sep 2005 · letzter Beitrag vom 29. Sep 2005
Antwort Antwort
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:03
Hallo,
bitte seht euch mal folgendes an und sagt mir bitte warum es in der Zeile Items.Add() knallt wenn ich die Kompo auf das Formular setze.

Delphi-Quellcode:
type
  TTimeZoneBox = class(TComboBox)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
  end;

constructor TTimeZoneBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
// Hier knallts !!!!!
items.add('Irgendwas');
end;
Danke Bauerle
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#2

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:19
Setze den Code-Teil, der die Items vorbelegt, in eine überschriebene CreateWnd Methode. Dort hast Du auf jeden Fall ein gültiges Handle mit Parent.
Achtung: CreateWnd kann theoretisch mehrmals im Laufe des Programms aufgerufen werden, evtl. musst Du ein Flag mit einbauen, das dafür sorgt, dass der Initialisierungs-Code nur ein einziges Mal ausgeführt wird.

Gruß, teebee
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:26
Hallo Baeuerle,

wie die Fehlermeldung ja bereits sagt, fehlt ein Elternteil .

Versuchs mal so:

Delphi-Quellcode:
constructor TTimeZoneBox.Create(AOwner: TComponent);
begin
   inherited Create(AOwner);
   Parent := AOwner as TWinControl;
   // Hier knallts jetzt nicht mehr!!!!!
   self.items.add('Irgendwas');
end;
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:27
Kann ich das mit

 csloading in componentstate abfangen?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:31
Hallo Baeuerle,

nein. Komponenten brauchen immer ein Parent, in dem sie dargestellt werden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:37
Zitat von Baeuerle:
Kann ich das mit

 csloading in componentstate abfangen?
Du solltest besser die Methode Loaded überschreiben und in dieser die ComboBox füllen. Alternativ geht natürlich auch das Überschreiben von CreateWnd.

Zitat von MrSpock:
Hallo Baeuerle,

nein. Komponenten brauchen immer ein Parent, in dem sie dargestellt werden.
Schon - aber eigentlich muss die Komponente sich den Parent nicht selbst zuweisen.

[Nachtrag]

Der Fehler tritt auf, weil ein Control normalerweise so erzeugt wird:
Delphi-Quellcode:
Variable := TControl.Create(Owner);
Variable.Parent := IrgendEinControl;
... du kannst also in der Methode .Create noch keinen Parent haben!
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

Re: Element '' hat kein übergeordnetes Fenster

  Alt 29. Sep 2005, 08:53
Zitat von Flocke:
Du solltest besser die Methode Loaded überschreiben und in dieser die ComboBox füllen. Alternativ geht natürlich auch das Überschreiben von CreateWnd.
Wenn man Loaded überschreibt, kann man die Komponente später nicht mehr dynamisch erstellen. Dabei wird Loaded nämlich nicht aufgerufen. Es bleibt also nur CreateWnd als Option.
  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 17:01 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