In this post, you’ll learn more about TWinControl. TwinControl is the base class for all controls that are wrappers for Microsoft Windows screen objects. Learning more about TWinControl will allow you to easily build GUIs with Python Development Tools.
TWinControl provides the common functionality for all controls that act as wrappers for Microsoft Windows screen objects (“windows”). Controls that are wrapped underlying windows have the following features:
- The control can incorporate the functionality of an underlying window. For example, if the underlying screen object is a text editor, the control can incorporate the editor’s ability to manage and display a text buffer.
- The control can receive user input focus. The focused control can handle keyboard input events. Some controls change their appearance when they have the focus. For example, button controls typically indicate the focus by drawing a rectangle around the caption.
- The control can serve as a container for other controls, referred to as child controls. This relationship is signified by the child’s Parent property. Container controls provide important services to their children, including display services for controls that do not implement their own canvases. Examples of container controls include forms, panels, and toolbars.
Controls based on TWinControl can display standard screen objects provided by Microsoft Windows, or customized screen objects developed by the VCL programmer.
Descendants of TWinControl include abstract base classes that support most kinds of user interface objects. The most significant descendant is TCustomControl, which provides code to implement a canvas and handle paint messages. Other important abstract descendants include TScrollingWinControl, TButtonControl, TCustomComboBox, TCustomEdit, and TCustomListBox. When defining new control classes, consider these descendants before deriving directly from TWinControl.
Every TWinControl object has a Handle property which provides the window handle for the underlying Microsoft Windows screen object. Use the Handle property to bypass the VCL API and directly access the underlying window.