Entwicklung von VCL-Komponenten: Welche Funktionen werden beim ersten Zeichenen des Objekts aufgerufen?



  • Ich entwickle eine visiuelle VCL komponente. Das Problem ist, dass die Komponente ihr eigenes Handle benötigt. Das Handle ist natürlich noch nicht verfügbar wenn der Konstruktor aufgerufen wird sondern erst wenn das Objekt das erstemal gezeichnet wird. Jetzt ist meine Frage welche Funktionen werden denn zum zeichnen aufgerufen? Das Objekt ist von TWinControl abgleitet und verfügt noch nicht über ein OnShow ereignis.



  • Vielleicht hilft Dir das Überschreiben der Methode Loadad() ja weiter.
    Dazu findest Du auch in der Hilfe was.

    Gruß,

    Alexander



  • Hab die Methode Loaded() nich gefunden. Ich hab jetzt einfach die Funktion SetParent überschrieben und meinen code hintendrangehängt. Das geht auch. Das Handle existiert ja sobald ein Parent-Objekt existiert.



  • mwoidt schrieb:

    Hab die Methode Loaded() nich gefunden.

    Dann hast Du wohl nicht richtig gesucht:

    BCB 4 Enterprise-Hilfe schrieb:

    TComponent::Loaded

    virtual void __fastcall Loaded(void);

    Beschreibung

    Loaded ermöglicht einer Komponente, sich selbst zu initialisieren, nachdem alle ihre Teile aus einem Stream geladen wurden.

    Meines Erachtens genau das, was Du brauchst. Und für einen Leser Deines Quelltexts (der Du selber
    sein könntest :)) vielleicht verständlicher als SetParent() zu überschreiben.

    Gruß,

    Alexander



  • Gibs nich eine Methode die einfach aufgerufen wird wenn um das ganze ding zu zeichnen?
    :Edit Hat sich erledigt ich hab Loaded überschrieben das hat alle meine Probleme gelöst THX!!!



  • mwoidt schrieb:

    Gibs nich eine Methode die einfach aufgerufen wird wenn um das ganze ding zu zeichnen?

    Vielleicht Update()? Schau Dir halt mal in der BCB-Hilfe die Methoden von TWinControl an.
    Aber was gefällt Dir denn an Loaded() nicht? Normalerweise sollte das doch für Deine Zwecke ideal sein, da die
    Methode - im Gegensatz zu Update() oder SetParent() - nur einmal zu Beginn aufgerufen wird.

    Gruß,

    Alexander


Anmelden zum Antworten