用 MQL 编写的用户界面图库 - 页 64

 
Реter Konow #:
同样的方法适用于所有情况。

是否也包括开/关状态?

 
hini #:

是否还包括开启/关闭状态?

_V_LAST 返回任何元素的最后一个参数值。

您可以将上述方法用于其他元素。在元素状态切换主题之后,我将展示滑块和带按钮字段的示例。

在同步时,一个字段将返回滑块的当前值,另一个字段将返回前一个值。

 

为不同元素设置开、关、LOCK_ON、LOCK_OFF、LOCK、UNLOCK状态

有些元素具有打开 关闭 状态 典型的 例子就是按钮和复选框。不过,也有许多元素始终处于中性状态。总是关闭。它们与按钮和复选框有什么共同点?两者都可以锁定和解锁。不同的是,按钮和复选框 可以 锁定为两种状态 -- 开和关,而其他元素只能处于中性状态。由于这些区别,有几个标识符具有相同的功能--锁定和解锁元素。

让我们举几个实际例子:

1.让我们打开带有按钮和复选框的设置窗口:

   //------------------------------------------------
   //Open the window "Settings example 1".
   //------------------------------------------------
   w_6_Settings_example_1();
   //------------------------------------------------



2.2. 设置按钮的启用状态:

   //------------------------------------------------
   //Set the button "Start" ON:

   w6_i_p1_BUTTON_Start(p1_ON);
   //------------------------------------------------

结果:按钮切换到按下状态。


3.现在, 复选框设置开启 状态:

   //------------------------------------------------
   //Set the checkboxes ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_ON);
   //------------------------------------------------

结果:复选框进入激活状态。

//----------------------------------------------------------------------------------------------------------------------


4.现在,使用 "关闭"标识符移"开"按钮""状态:

   //------------------------------------------------
   //Set the button "Start" OFF:

   w6_i_p1_BUTTON_Start(p1_OFF);
   //------------------------------------------------

结果:按钮恢复到中立状态。


5. 5. 复选框 恢复中性的OFF 状态

   //------------------------------------------------
   //Set the checkboxes OFF:
 
   w6_i_p7_CHECKBOX_Set_an_option(p7_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_OFF);
   //------------------------------------------------

结果:复选框恢复到中性状态。


//-------------------------------------------------------------------------------------------------------------------------


现在让我们将按钮和复选框锁定在两种可能的状态:中性和激活:


1.将按钮锁定在中性状态:

   //------------------------------------------------
   //Lock the button "Start" in the state OFF:

   w6_i_p1_BUTTON_Start(p1_LOCK_OFF);
   //------------------------------------------------

结果:按钮锁定在中性状态。

(故障,将修复)。


2.将复选框锁定在中立状态:

   //------------------------------------------------
   //Lock the checkboxes in the state OFF:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_OFF);
   //------------------------------------------------

结果:复选框被锁定在中立状态。


(某些元素在锁定状态下文本消失的问题将在下一版本中解决)。


3.使用LOCK_ON 标识符将按钮和复选框锁定在按下状态

   //------------------------------------------------
   //Lock the button "Start" in the state ON:

   w6_i_p1_BUTTON_Start(p1_LOCK_ON);
   //------------------------------------------------
   //------------------------------------------------
   //Lock the checkboxes in the state ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_ON);
   //------------------------------------------------

结果:按钮和复选框被锁定在按下状态。



//--------------------------------------------------------------------------------------------------------

现在,让我们测试一下始终处于中立状态的元素LOCKUNLOCK 命令。

例如,我们以同一窗口中的元素C_LIST、 D_LIST、H_SLIDER 和 S_EDIT 为例进行测试:



1.同时锁定所有四个元素:

   //------------------------------------------------
   //Lock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_LOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_LOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_LOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_LOCK);
   //------------------------------------------------

结果:C_LIST、 D_LIST、H_SLIDER 和 S_EDIT 元素 被锁定


2.解锁元素:

   //------------------------------------------------
   //Unlock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_UNLOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_UNLOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_UNLOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_UNLOCK);
   //------------------------------------------------

结果:元素已解锁。

//-------------------------------------------------------------------------------------

通过这些示例,我们结束了本主题,因为其他元素的锁定和解锁方法相同。

...

接下来我们继续讨论参数值的同步问题。

 
很好,非常实用。
 
hini #:
非常好,非常实用。

谢谢!用户评价对进一步开发非常重要。

 
在权衡了下一个话题的材料量之后,我认为最好把它推迟到明天,以便更好地记住前面的话题。
 

优秀图形用户界面的标志。

简约:图形占用的空间最小,没有无关紧要的元素和信息分散注意力。

功能性:占用的所有空间都应尽可能有用,所有功能都应直观。

人机工程学:最常用的元素应便于使用且面积较大。

美观:对齐、标准尺寸、统一风格、配色方案。

 
Ivan Titov #:

优秀图形用户界面的标志

简约:图形占用的空间最小,没有无关紧要的元素和信息分散注意力。

功能性:占用的所有空间都应尽可能有用,所有功能都应直观。

人机工程学:最常用的元素应方便使用且面积较大。

美观:对齐、标准尺寸、统一风格、配色方案。


谢谢你展示的例子。我完全同意您的观点。我希望最终能达到这样的发展水平。
 
Реter Konow #:
为不同元素设置开、关、LOCK_ON、LOCK_OFF、LOCK、UNLOCK状态

如何获取按钮的开关状态?

 
hini #:

如何获取按钮的开/关状态?

这是下一个主题。我们今天将讨论这个问题。

需要补充的是,该 GUI 的元素是绘制的,因此获取状态的标准方法ObjectGetInteger(0, "button1", OBJPROP_STATE); 将不起作用。

此外,我还要提醒您,包括按钮在内的元素事件都会发送到 API 文件。