Announcement

Collapse
No announcement yet.

Parent einer Komponente - self.Parent = nil ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Parent einer Komponente - self.Parent = nil ???

    Hallo Kollegen

    Versuche bereits seit zwei Wochen(na ja, bin ja noch Anfänger :-) eine spezielle ComboBox zu schreiben.
    Die Steuerelemente(TEdit, TSpeedButton, TListBox) auf einem TPanel oder TWinControl zu plazieren war keine wirklich schöne Lösung.

    Jetzt möchte ich mal was anderes versuchen:
    MyComponent von TEdit ableiten - dann

    constructor MyComponent.Create(AOwner : TComponent);
    begin
    inherited Create(AOwner);
    FButton := TSpeedButton.Create(self);

    !!!! FButton.Parent := self.Parent; !!! ich möchte also
    den Button am selben Fenster zeichnen wir das TEdit.
    Leider liefert mir self.Parent immer nil.
    Gibt's da eine andere Möglichkeit meine 'Eltern' zu ermitteln?

    Würde mich über einen heißen Tipp sehr freuen.

    mfg Paul

  • #2
    <p>Hallo Paul,<br>
    <br>
    das Problem liegt daran, dass in der Create noch kein Handle existiert. Du musst <b>CreateWnd</b> überschreiben, damit Du ein Parent.Handle zuweisen kannst.<br>
    <pre>
    procedure TMyComponent.CreateWnd;
    begin
    inherited CreateWnd;
    fButton:=TSpeedButton.Create(Self);
    fButton.Parent:=Self;
    ...
    ...
    end; // TMyComponent.CreateWnd
    </pre>
    Gruß Thomas</p&gt

    Comment


    • #3
      Besten Dank, Thomas - es klappt!

      Pau

      Comment


      • #4
        Hi

        VORSICHT ! .CreateWnd kann MEHMALS während der Lebenszeit eines Controls aufgerufen werden. Versuch mal vom übergeordneten Form während der Laufzeit Form.BorderStyle zu ändern und wieder zurück. Das hat zur Folge das von ALLEN Controls des Forms inclusive von Form selber, die Methode CreateWnd zweimal aufgerufen wird.

        Gruß, Hage

        Comment

        Working...
        X