Eigenschaft Canvas funktioniert nicht immer



  • Hallo.

    Es gibt mehrere Komponenten wo die Eigenschaft Canvas nicht funktioniert.
    Wie bekomme ich es hin das diese es doch tut?

    Bei TButton geht zum Beispiel nicht und bei einer Komponente die auf TCustomControl beruht und ich dringend diese Eigenschaft benötige.
    Von Komponenten selber bauen, habe ich leider nicht soviel Ahnung 😞

    Kann mir da einer sagen, wie ich Zugriff auf Canvas erhalte?



  • Komponenten ableiten und die benötigten Funktionen implementieren.

    vielleicht funktioniert ja auch folgendes:

    TCanvas *FCanvas = new TCanvas();
    FCanvas->Handle  = GetWindowDC(Button1->Handle);
    


  • Au fein! Das klappt sogar mit GetWindowDC().
    Leider verlieren die Canvas (bis auf TImage) das Gezeichnete, wenn man Fenster minimiert oder etwas darüberlegt.



  • Deswegen führt man sowas ja auch in der OnPaint() des Forms aus... 😉



  • Also in TForm1::FormPaint() bringt das bei mir leider garnichts 😕
    Ist immernoch weg 🙄



  • counter schrieb:

    Au fein! Das klappt sogar mit GetWindowDC().
    Leider verlieren die Canvas (bis auf TImage) das Gezeichnete, wenn man Fenster minimiert oder etwas darüberlegt.

    dann halt auf die entsprechenden ereignisse (OnResize z.b.) reagieren und die kompo neu zeichnen beim eintreten.

    sauberer wäre allerdings die kompos abzuleiten und dort die zeichenfunktionen direkt zu implementieren, dann funzt das auch beim minimieren usw und dein programm bleibt auch noch übersichtlicher.

    hier mal zwei beispiele für eine abgeleitete komponente (von TButton):

    http://www.ricosonntag.de/download/colorbutton.zip
    http://www.ricosonntag.de/download/picturebutton.zip



  • Grosses Dankeschön! 👍 Das schau ich mir gleich mal genauer an 🙂


Log in to reply