Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

Extending TCustomControl Painting

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

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.

DevX Pro
 
Comment and Contribute

 

 

 

 

 


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

 

 

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