Difference between revisions of "Cocoa Internals/Extensions"

From Lazarus wiki
Jump to navigationJump to search
Line 14: Line 14:
 
LCLObjectExtensions methods are:
 
LCLObjectExtensions methods are:
 
{| class="wikitable" style="width:100%"
 
{| class="wikitable" style="width:100%"
!Method
+
!rowspan="2"|Method
!Description
+
!rowspan="2"|Description
!LCLObjectExtensions Default behavior
+
!colspan="2"|Default behavior
 +
|-
 +
!LCLObjectExtension
 +
!LCLViewExtensions
 
|-
 
|-
 
|lclIsEnabled
 
|lclIsEnabled
 
|Returns true/false if control is enabled
 
|Returns true/false if control is enabled
 
|false
 
|false
 +
|
 
|-
 
|-
 
|lclSetEnable
 
|lclSetEnable
 
|Enables or disables the control
 
|Enables or disables the control
 
|does nothing
 
|does nothing
 +
|
 
|-
 
|-
 
|lclisVisible
 
|lclisVisible
 
|Returns true/false if control is visible
 
|Returns true/false if control is visible
 
|false
 
|false
 +
|[https://developer.apple.com/documentation/appkit/nsview/1483369-hidden not hidden]
 
|-
 
|-
 
|lclSetVisible
 
|lclSetVisible
 
|shows or hides a control
 
|shows or hides a control
 
|does nothing
 
|does nothing
 +
|setHidden() (where is the method in the documentation? deprecated?)
 
|}
 
|}
  

Revision as of 19:26, 23 December 2017

Extensions are used to add additional lcl-friendly methods to all Cocoa classes. The default implementation of each method should:

  • either indicate that a class is not a LCL-specific class (it's Cocoa native) thus should be handled with care
  • provide a basic functionality for LCL types (for example setting a control bounds using TRect type. Where cocoa is using float-point NSRect)

Extensions

LCLObjectExtension

The extensions adds additional methods to NSObject class of cocoa. (This is TObject counterpart, where (almost) all classes in Cocoa inherit from).


A lot of the methods below are control specific methods, thus it might be a good idea to elevate the extension from NSObject to NSView or NSControl. However, this might impact other control-like objects (i.w. NSWindow?)

LCLObjectExtensions methods are:

Method Description Default behavior
LCLObjectExtension LCLViewExtensions
lclIsEnabled Returns true/false if control is enabled false
lclSetEnable Enables or disables the control does nothing
lclisVisible Returns true/false if control is visible false not hidden
lclSetVisible shows or hides a control does nothing setHidden() (where is the method in the documentation? deprecated?)

Convention

  • All lcl extension methods should start with "lcl" to distinguish them Cocoa native methods.

See Also