对象查找
第九章图形句柄9.6对象查找第260页变量可以用函数setappdate
存储在一个对象,并用函数getappdata
接收。setappdate
函数的基本形式如下:
setappdata(Hndl, 'DataName', DataValue);
其中Hndl是数据存入的对象的句柄,'DataName'是这个数据的名字,而DataValue
是赋于这个名字的值。注意,数据值可以是数字,也可以是字符串。假设我们要定义两个特殊的数据值,其中一个用于存储发生在指定图象中的错误数,另一个是用于描述最后发现的错误的字符串。这两个数据值的名字是'ErrorCount'和'LastError'。我们假设H1
为这个图象的句柄,创建这些数据条目和初始化的命令为:
setappdata(H1, 'ErrorCount', 0);
setappdata(H1, 'LastError', 'No error');
我们可以用getappdata
函数随时调用这些数据。getappdata
的两种形式如下:
value = getappdata(Hndl, 'DataName');
struct = getappdata(Hndl);
Hndl是包含有这个数据的对象句柄,'DataName'是要调用的数据的名字,如果一个'DataName'被指定,那么与'DataName'相关的值就会被返回。如果没有被指定,那么所有与这个对象相关的自定义值就会以结构的形式被返回,数据条目名就是结构元素名。对上面的例子来说,getappdata
将会产生下面的结果:
>> value = getappdata(H1, 'ErrorCount')
value = 0
>> value = getappdata(H1);
struct =
ErrorCount: 0
LastError: 'No error'
与自定义数据相关的函数被总结在表9.1中:
表9.1 与自定义数据相关的函数
| 函数 | 描述 |
|--------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| setappdata(Hndl, 'DataName', DataValue)
| 把DataValue
存储在对象中的'DataName',这个对象以Hndl为句柄。 |
| value = getappdata(Hndl, 'DataName')
| 从以Hndl句柄的对象重新调用程序,只读取'DataName'中的数据。 |
| struct = getappdata(Hndl)
| 读取所有的自定义数据。 |
| isappdata(Hndl, 'DataName')
| 如果'DataName'在以Hndl为句柄的对象中有定义,那就会返回1,否则返回0。 |
| rmappdata(Hndl, 'DataName')
| 删除'DataName','DataName'是在以Hndl为句柄的对象中的自定义数据。 |
每一个新的图象在从创建开始时就有它们自已的句柄,句柄可以由创建函数返回。好的编程习惯是,如果你打算修改你创建的对象的属性,那么请保存对象的句柄,为以后调用函数get
和set
做准备。但是我们有时不能访问句柄。假设我们由于一些原因,丢失了对象的句柄。我们如何检测和修改图形对象呢?MATLAB提供了四个专门的函数,用来帮助寻找对象的句柄。