让我们在 API 文件中找到该按钮,并编写按下按钮时Blink_start() 函数的调用和按下按钮 时Blink_stop() 函数 的 调用 。
//-----------------------------------------------------
//This function will start the blinking of the elements.
//-----------------------------------------------------
voidBlink_start()
{
}
//-----------------------------------------------------
//This function will stop the blinking of the elements.
//-----------------------------------------------------
voidBlink_stop()
{
}
现在,让我们在 API 文件中找到 "Start "按钮的情况,并写出按下和按下按钮时对Blink_start() 和Blink_stop() 函数的调用:
case Settings_example_1___Start:
//------------------------------------------------------------------------------------------------------//What to do when the button is pressed or released?//------------------------------------------------------------------------------------------------------switch((int)action)
{
case pressed: Blink_start(); break;
case released: Blink_stop(); break;
}
//------------------------------------------------------------------------------------------------------//Your comment://------------------------------------------------------------------------------------------------------break;
voidBlink_start()
{
//Setting the color and the part of the element that is suppoused to blink.w6_i_p1_BUTTON_Start((int)clrLimeGreen,p1_BLINK_frame);
}
voidBlink_start()
{
//Setting the color and the part of the element that is suppoused to blink.w6_i_p1_BUTTON_Start((int)clrRed,p1_BLINK_text);
}
结果:按钮文字闪烁蓝色,按下按钮后停止闪烁。
4.4. 打开按钮底座的闪烁功能。pn_BLINK_base 属性的标识符负责底座:
voidBlink_start()
{
//Setting the color and the part of the element that is suppoused to blink.w6_i_p1_BUTTON_Start((int)clrRed,p1_BLINK_base);
}
结果: 按钮底座 闪烁红色,按下时停止闪烁。
现在,让我们将按钮边框和文字的闪烁结合起来:
void Blink_start()
{
//Setting the blinking of the frame and the text of the button w_6_Settings_example_1((int)clrRed,p8_BLINK_frame);
w_6_Settings_example_1((int)clrRed,p8_BLINK_text);
}
结果:按钮边框和按钮文字按照预期同步以不同颜色闪烁。
5.5. 让我们将窗口中的其他元素与闪烁连接起来:
voidBlink_start()
{
//Setting the color and the part of the element that is suppoused to blink.//-------------------------------------------------------------w6_i_p1_BUTTON_Start((int)clrLimeGreen,p1_BLINK_frame);w6_i_p1_BUTTON_Start((int)clrRed,p1_BLINK_text);//-------------------------------------------------------------w6_d_p5_S_EDIT_Spin_the_value((int)C'255,50,0',p5_BLINK_frame);w6_d_p5_S_EDIT_Spin_the_value((int)C'255,50,0',p5_BLINK_text);//-------------------------------------------------------------w6_i_p3_H_SLIDER_Roll_the_value((int)C'255,50,0',p3_BLINK_handle);w6_i_p3_H_SLIDER_Roll_the_value((int)C'255,50,0',p3_BLINK_bar);//-------------------------------------------------------------w6_i_p7_CHECKBOX_Set_an_option((int)C'255,50,0',p7_BLINK_text);//-------------------------------------------------------------w6_s_p6_D_LIST_D_LIST_1((int)C'255,50,0',p6_BLINK_frame);//-------------------------------------------------------------
}
我们还可以在 Blink_stop( ) 函数中写入禁用闪烁的功能 :
voidBlink_stop()
{
//Stopping the blinking//-------------------------------------------------------------w6_i_p1_BUTTON_Start(p1_BLINK_STOP);//-------------------------------------------------------------w6_d_p5_S_EDIT_Spin_the_value(p5_BLINK_STOP);//-------------------------------------------------------------w6_i_p3_H_SLIDER_Roll_the_value(p3_BLINK_STOP);//-------------------------------------------------------------w6_i_p7_CHECKBOX_Set_an_option(p7_BLINK_STOP);//-------------------------------------------------------------w6_s_p6_D_LIST_D_LIST_1(p6_BLINK_STOP);//-------------------------------------------------------------
}
结果:新元素被纳入 Blink_start() 和 Blink_stop()函数,并按预期闪烁。
6.6. 点击按钮时,让窗口边框闪烁。(暂时禁用滞后元素的闪烁)。
voidBlink_start()
{
//Setting the blinking of the frame of the window:w_6_Settings_example_1((int)clrRed,p8_BLINK_frame);
}
voidBlink_stop()
{
//Stopping the blinking of the frame of the window:w_6_Settings_example_1(p8_BLINK_STOP);
}
3.3. 让我们从 API 文件中的滑块元素和输入框中 调用Blink_delay() 函数,并传递当前值。
我们在Blink_start()函数中添加了窗口边框闪烁功能 : .
voidBlink_start()
{
//Setting the color and the part of the element that is suppoused to blink.
//-------------------------------------------------------------
w_6_Settings_example_1((int)clrRed,p8_BLINK_frame);//-------------------------------------------------------------w6_i_p1_BUTTON_Start((int)clrLimeGreen,p1_BLINK_frame);w6_i_p1_BUTTON_Start((int)clrRed,p1_BLINK_text);//-------------------------------------------------------------w6_d_p5_S_EDIT_Spin_the_value((int)C'255,50,0',p5_BLINK_frame);w6_d_p5_S_EDIT_Spin_the_value((int)C'255,50,0',p5_BLINK_text);//-------------------------------------------------------------w6_i_p3_H_SLIDER_Roll_the_value((int)C'255,50,0',p3_BLINK_handle);w6_i_p3_H_SLIDER_Roll_the_value((int)C'255,50,0',p3_BLINK_bar);//-------------------------------------------------------------w6_i_p7_CHECKBOX_Set_an_option((int)C'255,50,0',p7_BLINK_text);//-------------------------------------------------------------w6_s_p6_D_LIST_D_LIST_1((int)C'255,50,0',p6_BLINK_frame);//-------------------------------------------------------------
}
case Settings_example_1___Spin_the_value:
//------------------------------------------------------------------------------------------------------//What to do when the value is set?//------------------------------------------------------------------------------------------------------//Min value: NOT SET | Max value: NOT SET | V_step: 1.7 | Default value: 468.99 | Digits: 3//------------------------------------------------------------------------------------------------------w6_i_p3_H_SLIDER_Roll_the_value((int)value);//Сalling the blinking delay functionBlink_delay((int)value);//------------------------------------------------------------------------------------------------------//Your comment://------------------------------------------------------------------------------------------------------break;
结果:正常工作,但在输入框中输入数值时,警告窗口出现时不会重置输入的数值(需要改进)。
(另外 , 更新中添加了框架颜色设置,但当前版本中没有)。
下一项任务是考虑按 "取消 "按钮取消输入的参数。
这是一项非常艰巨的任务,但我已经部分实现了。我将尝试恢复以前的功能。
在上一个故障中,我展示了如何应用彩色风险指示,以及如何在超过设定参数限值时打开阻止窗口。然而,我发现了两个意想不到的问题。
1.风险管理功能会在越过危险值时打开第一个警告窗口,但如果此时一直将光标按在元素上,该值会继续增长并达到下一个条件值。- 危急。
2.越过临界值后,最后一个警告窗口会打开,但如果用户继续按住鼠标左键,也不会阻止数值变化。
3. 如果用户松开鼠标左键,并想关闭警告窗口,但却做不到。更准确地说,是无法关闭。原因是两个阻止窗口开始相互阻止。当其中一个阻止窗口打开时,它很容易被关闭,但当两个窗口同时打开时,界面上的其他任何东西都无法工作。虽然程序仍能运行,但却陷入了停滞状态。
下图显示了这种情况的发生过程:
然后,我修复了设置窗口的相互锁定问题,现在这些窗口不会相互干扰了。它们一起执行锁定功能,不会相互冲突。
现在,我需要让警告窗口自动停止更改参数值,即使按下鼠标左键且项目处于活动状态也是如此。
你能理解的。
主题 14.3:通过元件(框架、底座、文本、滑块和滑块板)的闪烁显示危险值。
元素闪烁是对颜色指示的一个很好的补充,表示参数进入危险值区域。新方案的实施与之前的方案类似,但如果颜色指示的工作原理是数值越接近临界值,颜色就越亮,那么闪烁只会增加初始颜色与为闪烁设置的颜色之间的变化频率。用户可以通过编程调整闪烁延迟时间,逐渐缩短至 25 毫秒或延长至 2.5 秒。在这种情况下,两种机制可以同时运行。颜色会从浅绿色变为鲜红色和酒红色,闪烁速度也会加快。一个装置不会干扰第二个装置。接下来,我们将举例说明。
*重要提示: 闪烁的激活与颜色指示功能无关。 这两种机制在技术上并无关联,可以并行工作,也可以分开工作。
为实现闪烁功能,交互式元素添加了新的属性:
新增了控制闪烁速度和停止的属性:
让我们总结一下上述内容:
明天我们将继续讨论实际示例。
今天只做一个小演示,以了解我们在说什么。
不幸的是,录制时会有延迟。处理器已加载。但演示显示,元素以不同的速度异步闪烁。元素的不同部分也会闪烁。所有这些都是通过程序设置的。任务栏上的选项卡会自动找到闪烁速度最快的元素,并变成蓝色。然后,当该元素开始减少闪烁频率时,它会找到另一个闪烁最快的元素,并变成红色。
明天我们将更详细地探讨这个问题。
附注:我们还将讨论如何使用这些非常有用的功能。
接着昨天的话题...
今天,我们将从概念上总结并完成元素闪烁这一主题。
昨天,我只从危险值信号的角度探讨了闪烁,但其应用范围远不止于此。下面是一个例子:
假设有一个多币种智能交易系统 在分析多个市场的情况。假设它根据一套复杂的标准选择最佳进入/退出点。Expert Advisor 以半自动模式运行,交易者无法或不想对交易策略的整个逻辑进行编程。它的机器人会监控市场、收集数据并告知重要点位。专家的工作仅限于分析并以表格和图表的形式显示结果。交易的最终决定由个人做出。
在这种变体中,交易活动包括观察实时数据流,并将一系列运行值打包成自定义参数。后者有助于提高态势感知能力。
然而,实时参与需要及时做出决策。当分析结果通过多个图形视图显示在不同窗口时,问题就出现了。需要关注的信息量不断增加,关注的焦点也随之分散。因此,交易员的头脑中市场视角变得模糊不清,工作效率降低。疲劳感随之而来。
在这种情况下,闪烁元素会起到很好的帮助作用:
让我们来具体分析一下新功能:
//----------------------------------------------------------------------------------------------------------
1.准备工作的顺序
现在,让我们在 API 文件中找到 "Start "按钮的情况,并写出按下和按下按钮时对Blink_start() 和Blink_stop() 函数的调用:
下面我们继续为函数填充内容:
1.我们需要 "开始 "按钮的框架闪烁。如下代码所示,我们来编写一个框架闪烁的调用。按钮框架闪烁属性的标识符为 p1_BLINK_frame。 指定闪烁 的颜色和闪烁的对象。
2. 现在我们来实现释放按钮时禁用闪烁。标识符p1_BLINK_STOP 负责关闭闪烁。 除此以外,无需在括号中添加任何内容。
让我们检查一下结果:
3.让我们打开按钮文本的闪烁,而不是框架的闪烁。pn_BLINK_text 属性的标识符负责闪烁文本:
结果:按钮文字闪烁蓝色,按下按钮后停止闪烁。
4.4. 打开按钮底座的闪烁功能。pn_BLINK_base 属性的标识符负责底座:
结果: 按钮 底座 闪烁红色,按下时停止闪烁。
现在,让我们将按钮边框和文字的闪烁结合起来:
结果:按钮边框和按钮文字按照预期同步以不同颜色闪烁。
5.5. 让我们将窗口中的其他元素与闪烁连接起来:
我们还可以在 Blink_stop( ) 函数中写入禁用闪烁的功能 :
结果:新元素被纳入 Blink_start() 和 Blink_stop()函数,并按预期闪烁。
6.6. 点击按钮时,让窗口边框闪烁。(暂时禁用滞后元素的闪烁)。
结果:窗口边框闪烁如常。
*重要提示:所有被考虑的元素和窗口边框都以默认速度闪烁。
我们将进一步调节带滑块手柄的元素和带按钮的区域的闪烁速度。
7.7. 将闪烁速度与按钮和滑块字段中的值绑定。所有元素和窗口边框将同时闪烁,闪烁速度将由这些元素手动设置。
请注意,闪烁速度取决于pn_BLINK_DELAY 延迟。
为了解决这个问题,让我们执行以下操作:
我们在 Blink_start() 函数中添加了窗口边框闪烁功能 : .
我们在Blink_stop() 函数中添加了禁用窗口边框闪烁的功能 :
编写Blink_delay() 函数:
在滑块和输入框元素事件中 调用Blink_delay()函数,并将元素的当前值传递给它:
*重要提示:事实证明,无法更改复选框和下拉列表元素的闪烁速度。该速度始终等于 20(半秒)。这是有意为之,但我可能会在将来修改。其他元素可以改变闪烁速度。
让我们从 "Spin_the_value "元素(带按钮的字段)的事件中 调用Blink_delay() 函数。该字段与滑块相连,因此无需在滑块中进行调用。连接将起作用,不直接调用的滑块将通过带按钮的字段改变闪烁速度:
结果:带按钮的字段和滑块改变窗口中元素的闪烁速度。
结果:
我认为这一主题已经完成。
下一个问题是按下 "取消 "按钮取消输入值。