Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Design Patterns
Expertise: Beginner
Mar 28, 1997



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Extending TCustomControl Painting

I have two questions:

Question 1:

How can I extend the painting functionality of a TWinControl like the TGraphicControl's Paint method?

Question 2:

I cannot find the Paint method in TWinControl to override. Specifically, I want to extend the TDBEdit class. The TDBEdit class implements the WMPaint method that is private.

In answer to your first question:

To extend the capabilities of Paint for TGraphicControl, you need to override the method and add your own capabilities. That's highly object-oriented.

Regarding your second question:

You're right, there's no Paint method for TDBEdit, but there is PaintWindow, and that's what you'll have to override.

I suggest you look in Controls.PAS to see how TCustomControl deals with overriding PaintWindow and creates a virtual Paint method. It's actually quite ingenious. My approach would be to make a descendant of TCustomMaskEdit and include the capabilities you want from TDBEdit. Then, instead of putting the WMPaint procedure in the private section, move it to the protected section. From there, you can override PaintWindow from TWinControl, then propagate your own Paint procedure and canvas. I haven't done this myself, but after studying the VCL source code, this is the place I'd start.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date