ereignis wenn caption sich ändert?



  • ich bastle mir gerade ein eigenes formdesign und hab am oberen rand eine label, was die caption der form anzeigen soll

    wenn nun zur laufzeit die caption der form sich ändert, dann will ich auch das label aktualisieren

    entweder über ein ereignis, oder irgendwie die caption der form als zeiger dem label übergeben, nur wie?



  • Die Caption ändert sich doch nicht von selbst sondern wird programmgesteuert geändert, also von dir, oder? Warum setzt du nicht im gleichen Zug die Label-Caption?



  • das wird später eine komponente (die dann auch andere nutzen wollen) und ich find es user-freundlicher, wenn die dann die caption direkt über die form und nicht über die komponente ändern können

    außerdem soll es noch möglich sein, das skin zu deaktivieren, also sieht man dann wieder das normale windows-design
    also müssen sie dann eh die caption der form ändern und nicht die der komponente



  • Vielleicht müßtest Du die entsprechende Eigenschaft überschreiben,
    indem Du neue Zugriffsmethoden definierst und dort natürlich die
    ursprünglichen aufrufst (GetText, SetText).

    Gruß,

    Alexander



  • gut, soviel zur theorie
    wie überschreib ich denn die ereignismethode?



  • Jester2000 schrieb:

    gut, soviel zur theorie
    wie überschreib ich denn die ereignismethode?

    Ein Ereignis wird automatisch erzeugt, wenn die Caption sich ändert.
    Das sollte eigentlich automatisch passieren, sobald die geerbte Schreib-
    methode (SetText) aufgerufen wird. D.h. Du schreibst Dir eine SetText-
    Methode, dort setzt Du die Caption deines Labels und rufst anschließend
    die geerbte Methode auf.

    Gruß,

    Alexander



  • wie bring ich denn jetzt aber der caption bei, dass sie meine neue SetText-methode aufruft? und wie ändert sich dann der text der caption, wenn die SetText-methode überschrieben wurde?

    ich peil dass noch nicht so ganz
    kannst du mir mal nen codeschnipsel posten?
    ich hab ein label auf die form plaziert, welches immer den text der Form1->Caption anzeigen soll



  • Ich versuch's mal, hab's aber nicht ausprobiert.
    In den Header:

    published:
      __property AnsiString Caption = {read=GetText, write=SetText,
                                       stored=IsCaptionStored};
    protected: // oder private:
      void __fastcall SetText(const AnsiString Value);
      AnsiString __fastcall GetText();
    

    in die .cpp-Datei:

    void __fastcall MeinForm::SetText(const AnsiString Value)
    {
      TControl::SetText(Value);
      MeinLabel->Caption = Value;
    }
    
    AnsiString __fastcall MeinForm::GetText()
    {
      return TControl::GetText();
    }
    

    Wie gesagt, ich bin mir nicht sicher, daß das funktioniert. Warnungen gibt's
    beim Kompilieren bestimmt.

    Gruß,

    Alexander



  • ich suche aber eine lösung, wo ich später nur noch die komponente auf die form zieh und die dann alles organisiert
    da kann ich doch nicht das ereignis der Caption überladen, oder?
    ich will nicht, dass man dann noch in der header-file von der form was reinschreiben muss



  • Ich dachte, Du wolltest von einem Formular erben.
    Dann fällt mir nur noch die Win32API ein. Dafür habe ich
    allerdings keine Lösung.
    Vielleicht kannst Du ja ein neues Formular basteln, das man dann
    wiederverwenden kann.

    Gruß,

    Alexander



  • habs hinbekommen
    für alle dies interessiert, ich habs über WM_SETTEXT abgefangen (nähere Infos in der BCB-Hilfe unter "WindowProc (Beispiel)")


Anmelden zum Antworten