WEBINAR:

On-Demand

Extending TCustomControl Painting

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.

Answer: 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.

Advertiser Disclosure:
Some of the products that appear on this site are from companies from which QuinStreet receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. QuinStreet does not include all companies or all types of products available in the marketplace.

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