Write Property Set Methods for Custom UI Components in App Designer - MATLAB & Simulink (original) (raw)
When you create a public property for a custom UI component, one step involves writing code to update the underlying components and graphics objects within your custom component whenever the value of the public property changes. In general, perform this step by writing code in the component update function. MATLAB® calls the update
function only when necessary, which can result in performance improvements over writing custom code to perform a similar purpose. For more information about updating properties using the update
function, see Create Public Properties for Custom UI Components in App Designer.
However, you might want to perform certain tasks when one specific property is updated but not when other properties are updated. Because the update
function executes whenever the value of any public property changes, you can instead write code to perform these tasks when a specific property changes by defining a set method for that property.
Consider writing a property set method when you want to:
- Perform custom property validation.
- Throw a custom error when the property is set incorrectly.
- Process the property value before storing it.
This example shows how to validate a public property of a custom IP address UI component by writing a set method.
IP Address Component Overview
This example IP address component accepts input formatted using either the IPv4 or IPv6 protocol. The protocol determines how the component is displayed:
- IPv4 — The component contains four numeric edit fields, each with a value between 0 and 255.
- IPv6 — The component contains eight text edit fields, each with four characters representing hexadecimal digits.
The IP address component interface consists of:
- A public property named
Address
to store the value of the IP address - A public property named
Protocol
to specify the IP address protocol - A public callback named
AddressChangedFcn
that executes when an app user changes the IP address by typing in an edit field
Because the Address
property can store either a four-element numeric vector (when the protocol is IPv4) or an eight-element cell array (when the protocol is IPv6), use custom validation logic in a property set method to check whether the Address
value is valid.
To view the full IPAddress
component code in App Designer, enter this command in the MATLAB® Command Window:
openExample('matlab/IPAddressCustomComponentExample');
Create a Property Set Method
To create a new property set method for the Address
property of the IP address component, use these steps:
- Create a new public function. In Code View, in theEditor tab, select
> .
- In the
methods
block that contains the new function, delete the text(Access = public)
. Property set methods must be added in amethods
block with no attributes. This deletion does not change the functionality of themethods
block because the default value of theAccess
attribute ispublic
. For more information, see Property Get and Set Methods. - Replace the function definition that App Designer creates with this code:
function set.Address(comp,val)
% Write property validation code here
end
Theset.Address
function executes whenever an app creator sets the value of theAddress
public property.
For more information about
Perform Custom Property Validation
Write code in the set.Address
function to verify that the new property value follows the expected format:
- If the protocol is IPv4, check that the app creator set the property to a vector of four integers between 0 and 255.
- If the protocol is IPv6, check that the app creator set the property to a cell array of eight character vectors, where each character vector represents four hexadecimal digits.
In each case, if the new value is not in the expected format, throw a helpful error to inform the app creator what value the property expects. Finally, set theAddress
property of the component to the new property value.
Add this code to the body of the set.Address
function:
switch comp.Protocol % Validate IPv4 address case "IPv4" if length(val) ~= 4 error("IPv4 address must have four fields.") end mustBeInRange(val,0,255)
% Validate IPv6 address
case "IPv6"
if length(val) ~= 8
error("IPv6 address must have eight fields.")
end
if ~isequal(cellfun('length',val),repmat(4,1,8))
error("Specify IPv6 field as a four-digit hexadecimal number.")
end
try
hex2dec(val);
catch
error("Specify IPv6 field as a four-digit hexadecimal number.")
end
end comp.Address = val;
Verify Property Validation Behavior
After you have finished developing the IPAddress
component, verify the property validation behavior by creating a component object and setting theAddress
property from the MATLAB Command Window.
Navigate to the folder where the IPAddress.mlapp
file is saved. Create an IP address component, specify its position, and return the component object ascomp
. By default, the component is created using the IPv4 protocol.
comp = IPAddress(Position=[50 100 420 31]);
Try to set the Address
property to a scalar value. An error displays.
Error using IPAddress/set.Address IPv4 address must have four fields.
Change the component to an IPv6 address component.
Try to set one field of the IP address to a value that does not represent a four-digit hexadecimal number.
comp.Address{1} = '123h';
Error using IPAddress/set.Address Specify IPv6 field as a four-digit hexadecimal number.