Tag Archives: windows messages

Preserve Internal State (/Window Handle) when Changing Parent or Style for an ActiveX Control – aka How To RecreateWnd “Properly” for TOleContainer ancestors

In any (VCL) Delphi application more stuff happens behind the scenes than you might be aware of.
As known, every (TWinControl descendant) control placed on a form (like TButton or TEdit) and even the (T)Form itself is actually a wrapper for a Windows screen object. Every such object is “defined” by something called Window Handle. You can use the Handle value to do stuff with the underlying Windows screen object like hide or show it or move around its parent (another Windows screen object) or change some of its properties.
Continue reading

Receive Windows Messages In Your Custom Delphi Class – NonWindowed Control/Object

Windows messages are a key ingredient in communication between Windows and (your) application and also in communication between (two) applications.

Even without your knowledge Windows messages are being posted and handled by forms in your application.

For example, when the user closes the form in your application, the WM_CLOSE message is sent to the window/form and the form gets closed (if you do not react programmatically).

For an application to receive a Window message, the application must provide a *window* a message will be sent to. In normal situation this window is the (main) form in your application. You write a procedure to handle a specific message, like WM_NCHitTest, and you are done.

BUT, what if you do NOT have a window to receive a message? What if you want to handle messages in your custom class derived from TObject?
Continue reading

Setting MaxLength for TListView’s Edit Control (Plus: Forcing Edit Mode Using a Keyboard Shortcut)

TListView Edit Item CaptionThe TListView Delphi control displays a list of items in a fashion similar to how Windows File Explorer displays files and folders.

The ReadOnly property of a List View, determines whether the user can modify the caption of an item. When ReadOnly is false, the OnEditing and OnEdited events occur when the user begins and finishes editing the list item, respectively.

At run time the user can click the selected item to enter the edit mode. Actually, two clicks (not double click) are needed: a click on an item to select it and then a second click to go to edit mode.

Here’s how to initiate the edit mode by a keyboards shortcut and also how to limit the number of characters for the TListView’s editor control.

Continue reading