设置图形对象值的函数使用异步调用,这意味着命令被加到另一个图表队列,而该函数不会等待其执行。 取而代之的是,它会立即返回控制权。
据此,我们并不能确信已成功添加到事件队列的函数会确定无疑地更爱图形对象的属性。
根据帮助,为了查看命令执行结果,我们可以利用请求指定对象属性的函数。 不过,您应该记住,此类函数会添加到该图表队列的末尾,并且它们会等待执行结果,故可能会很耗时。 在图表上处理大量对象时,应考虑到此特性。
现在,我保持它们不变,并假设更改对象属性的命令已成功运行。 如果在使用函数库时,我检测到在类变量属性已经指定的情况下没有设置图形对象属性,我将添加一个检查,从而确保图形对象属性已被真实更改。
我们来研究为图形对象设置属性的所有类似方法,以及添加到类的公开部分的变量:
//--- Set the "Background object" flag bool SetBack(const bool flag) { ::ResetLastError(); if(::ObjectSetInteger(this.m_chart_id,this.m_name,OBJPROP_BACK,flag)) { this.m_back=flag; return true; } else CMessage::ToLog(DFUN,::GetLastError(),true); return false; } //--- Set the "Object selection" flag bool SetSelected(const bool flag) { ::ResetLastError(); if(::ObjectSetInteger(this.m_chart_id,this.m_name,OBJPROP_SELECTED,flag)) { this.m_selected=flag; return true; } else CMessage::ToLog(DFUN,::GetLastError(),true); return false; } //--- Set the "Object selection" flag bool SetSelectable(const bool flag) { ::ResetLastError(); if(::ObjectSetInteger(this.m_chart_id,this.m_name,OBJPROP_SELECTABLE,flag)) { this.m_selectable=flag; return true; } else CMessage::ToLog(DFUN,::GetLastError(),true); return false; } //--- Set the "Disable displaying the name of a graphical object in the terminal object list" flag bool SetHidden(const bool flag) { ::ResetLastError(); if(::ObjectSetInteger(this.m_chart_id,this.m_name,OBJPROP_SELECTABLE,flag)) { this.m_hidden=flag; return true; } else CMessage::ToLog(DFUN,::GetLastError(),true); return false; } //--- Set the priority of a graphical object for receiving the event of clicking on a chart bool SetZorder(const long value) { ::ResetLastError(); if(::ObjectSetInteger(this.m_chart_id,this.m_name,OBJPROP_ZORDER,value)) { this.m_zorder=value; return true; } else CMessage::ToLog(DFUN,::GetLastError(),true); return false; }