mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 12:49:42 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
LCL Messages
 | 
						|
 | 
						|
This document is for Lazarus developers
 | 
						|
 | 
						|
 | 
						|
Thumb rules:
 | 
						|
 | 
						|
Messages exists for VCL compatibility.
 | 
						|
Messages look like win32 messages, but only those parameters and flags are
 | 
						|
supported, that are commonly used by existing VCL controls (including third
 | 
						|
part controls).
 | 
						|
Every supported flag, that is not commonly used, makes implementing the
 | 
						|
interfaces more difficult. So, think twice, before adding a message.
 | 
						|
Many messages uses hard to read constants and small values (smallint) which
 | 
						|
limits the interfaces and windows does not define the exact ordering of
 | 
						|
messages. Therefore the goal is that every message can be substituted by a
 | 
						|
method. For example: A control can use DoOnChangeBounds instead of WMSize to
 | 
						|
react.
 | 
						|
 | 
						|
The LCL should send messages to the interface only in rare cases. In fact, only
 | 
						|
when it is common usage in VCL controls.
 | 
						|
 | 
						|
At the moment the interfaces send many messages to the LCL. This amount should
 | 
						|
be reduced in future. Better create a procedure in the LCL, that will send the
 | 
						|
message. This way the parameters are well defined and all interfaces creates
 | 
						|
the messages the same way.
 | 
						|
 | 
						|
 | 
						|
The messages:
 | 
						|
 | 
						|
Interface -> LCL
 | 
						|
 | 
						|
WMSize, WMMove - Send from the interface to tell the LCL control to update its
 | 
						|
  bounds. Because of the auto aligning/sizing features of the LCL and some
 | 
						|
  interfaces, these messages are not sent everytime a HandleObject is resized.
 | 
						|
  So, either trust the LCL bounds OR the interface bounds, but don't mix.
 | 
						|
  
 | 
						|
  
 |