Neue Komponente von TGraphicControll ableiten



  • Hallo,

    habe eine Komponente MyLed von TGraphic Controll abgeleitete und die Methode
    Paint überschrieben.

    #include <Controls.hpp>
    #include <Classes.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class PACKAGE MyLed : public TGraphicControl
    {
    private:
    protected:
    public:
            __fastcall MyLed(TComponent* Owner);
            void __fastcall Paint(void);
    
    __published:
                __property Color;
    };
    //---------------------------------------------------------------------------
    #endif
    
    #pragma package(smart_init)
    //---------------------------------------------------------------------------
    // ValidCtrCheck wird benutzt, um sicherzustellen, daß die erzeugten Komponenten
    // keine rein virtuellen Funktionen besitzen.
    //
    
    static inline void ValidCtrCheck(MyLed *)
    {
            new MyLed(NULL);
    }
    //---------------------------------------------------------------------------
    __fastcall MyLed::MyLed(TComponent* Owner)
            : TGraphicControl(Owner)
    {
            Color = clYellow;
    }
    //---------------------------------------------------------------------------
    namespace Myled
    {
            void __fastcall PACKAGE Register()
            {
                     TComponentClass classes[1] = {__classid(MyLed)};
                     RegisterComponents("Beispiele", classes, 0);
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall MyLed::Paint(void)
    {
         Canvas->Rectangle(1,60,1,60);
    
    }
    

    Zuerst war ich erfreut ein gelbes Rechteck zu gesicht zu bekommen, doch ohne
    etwas am SourceCode zu änder ist es plötzlich nicht mehr sichtbar.
    Was mache ich hier falsch.



  • versuchs mal mit:

    void __fastcall MyLed::Paint(void)
    {
         TGraphicControl::Paint();
         Canvas->Rectangle(1,60,1,60);
    
    }
    

    Edit: nach ein paar Tests gehts wahrscheinlich eher mit:

    void __fastcall MyLed::Paint(void)
    {
         Canvas->Brush->Color = Color;
         Canvas->Pen->Color = Color; 
         Canvas->Rectangle(1,1,60,60);
    }
    

    außerdem solltest du die Breite und Höhe der Komponente einstellen, da sie sonst mit beiden Werten Null ist

    Grüße
    Linnea


Anmelden zum Antworten