//--------------------------//FIRST GROUP//--------------------------
GROUP, "Group 1",
__, CHECKBOX, "Checkbox 100",
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, CHECKBOXES, W, 120, END,
//--------------------------//--------------------------------------------------------------//1. WRITE THE NAME OF THE CHECKBOX THAT WILL BLOCK THE OTHERS://2. WRITE KEYWORD "BLOCKS".//3. WRITE THE NAMES OF THE ELEMENTS (OR GROUPS) IT WILL BLOCK.//4. PUT "END" IN THE END.//5. OR, WRITE THE NAME OF THEIR GROUP.//--------------------------------------------------------------"Checkbox 100", BLOCKS, "Group 2", END,
//--------------------------------------------------------------//--------------------------//SECOND GROUP//--------------------------
GROUP, "Group 2",
__, H_SLIDER, "H_Slider 1", W, 120, S_EDIT, "Textbox 1", W, 120,
__, C_LIST, "Combobox 1", W, 120, D_LIST, "Combobox 2", W, 120,
__, BUTTON, "Button 1", W,120, D_BUTTON, "Dialog button 1", W, 120,
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2H, "Checkbox 100", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): //------------------------------------------------------
NEW_WINDOW,
//------------------------------------------------------/*SET WINDOW TYPE*/ W_TYPE, SETTINGS,
//------------------------------------------------------/*WRITE WINDOW'S NAME*/ W_NAME, "My first window",
//------------------------------------------------------/*POINT TO WINDOW'S ICON*/ W_ICON, "::Images\\16x16\\Smile.bmp",
//------------------------------------------------------//------------------------------------------------------/*SET WINDOW'S ADDITIONAL PROPERTIES*///----------------------------------------------------------------------------------/*WINDOW OPENS AT START*/ OPEN_ON_INIT, /*(OOI)*//*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*//*MARGINS OF THE WINDOW*/ MARGINS, 40,40,/*Х, Y*///----------------------------------------------------------------------------------////----------------------------------------------------------------------------------//1. DECLARE A GROUP WITH AN ABSTRACT NAME A.//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL __, //3. DECLARE A BUTTON AND WRITE IT'S NAME.//4. END GROUP WITH THE KEYWORDS END_GROUP,//------------------------------------------------------
GROUP, "Buttons group",
__, BUTTON, "Button 1", W, 120,_,H, 50, D_BUTTON, "D button 1", W, 120,_,H, 50,
__, I_BUTTON, "I Button", W, 120,_,H, 50, TB_BUTTON, "TB button 1", W, 120,_,H, 50,
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): //----------------------------"Button 1", N_TEXT,"Neutral state",
"Button 1", A_TEXT,"Active state",
"Button 1", N_LABEL,"::Images\\16x16\\About.bmp",
"Button 1", A_LABEL,"::Images\\16x16\\3d bar chart.bmp",
"Button 1", FIC,
//----------------------------//----------------------------"I Button", N_TEXT,"Neutral",
"I Button", A_TEXT,"Active",
"I Button", N_LABEL,"::Images\\16x16\\Accounting.bmp",
"I Button", A_LABEL,"::Images\\16x16\\Address book.bmp",
"I Button", FIC,
//----------------------------//----------------------------"D button 1", N_TEXT,"Also Neutral",
"D button 1", A_TEXT,"Also Active",
"D button 1", N_LABEL,"::Images\\16x16\\Alarm clock.bmp",
//----------------------------//----------------------------"TB button 1", N_TEXT,"TB Neutral",
"TB button 1", A_TEXT,"TB Active",
"TB button 1", N_LABEL,"::Images\\16x16\\Alarm clock.bmp",
"TB button 1", A_LABEL,"::Images\\16x16\\Address book.bmp",
"TB Button 1", FIC,
//------------------------------------------------------//FINISH THE WINDOW BY KEYWORDS END_WINDOW,//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
//+------------------------------------------------------------------+//| My first window.mqh |//+------------------------------------------------------------------+//DECLARE A NEW WINDOW//----------------------------------------------------------------------------------
NEW_WINDOW,
//------------------------------------------------------/*SET WINDOW TYPE*/ W_TYPE, SETTINGS,
//------------------------------------------------------/*WRITE WINDOW'S NAME*/ W_NAME, "Just a window",//------------------------------------------------------/*SET WINDOW'S ADDITIONAL PROPERTIES*///------------------------------------------------------ /*WINDOW IS ALWAYS ON TOP*/ALWAYS_ON_TOP,/*(OOT)*///------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------//DECLARE A NEW WINDOW//----------------------------------------------------------------------------------
NEW_WINDOW,
//------------------------------------------------------/*SET WINDOW TYPE*/ W_TYPE, SETTINGS,
//------------------------------------------------------/*WRITE WINDOW'S NAME*/ W_NAME, "My first window",
//------------------------------------------------------/*POINT TO WINDOW'S ICON*/ W_ICON, "::Images\\16x16\\Smile.bmp",
//------------------------------------------------------//------------------------------------------------------/*SET WINDOW'S ADDITIONAL PROPERTIES*///----------------------------------------------------------------------------------/*WINDOW OPENS AT START*/ OPEN_ON_INIT, /*(OOI)*//*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*//*MARGINS OF THE WINDOW*/ MARGINS, 40,40,/*Х, Y*///----------------------------------------------------------------------------------////----------------------------------------------------------------------------------//1. DECLARE A GROUP WITH AN ABSTRACT NAME A.//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL __, //3. DECLARE A BUTTON AND WRITE IT'S NAME.//4. END GROUP WITH THE KEYWORDS END_GROUP,//------------------------------------------------------
GROUP, "Buttons group",
__, BUTTON, "Just a window", W, 150, //the button WILL call the window due to sharing the same name.
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): //----------------------------"Just a window", N_TEXT, "Press to open",//redefine text on the button"Just a window", N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------//FINISH THE WINDOW BY KEYWORDS END_WINDOW,//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
第二种变体
//+------------------------------------------------------------------+//| My first window.mqh |//+------------------------------------------------------------------+//DECLARE A NEW WINDOW//----------------------------------------------------------------------------------
NEW_WINDOW,
//------------------------------------------------------/*SET WINDOW TYPE*/ W_TYPE, SETTINGS,
//------------------------------------------------------/*WRITE WINDOW'S NAME*/ W_NAME, "Just a window",//------------------------------------------------------/*SET WINDOW'S ADDITIONAL PROPERTIES*///------------------------------------------------------ /*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*///------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------//DECLARE A NEW WINDOW//----------------------------------------------------------------------------------
NEW_WINDOW,
//------------------------------------------------------/*SET WINDOW TYPE*/ W_TYPE, SETTINGS,
//------------------------------------------------------/*WRITE WINDOW'S NAME*/ W_NAME, "My first window",
//------------------------------------------------------/*POINT TO WINDOW'S ICON*/ W_ICON, "::Images\\16x16\\Smile.bmp",
//------------------------------------------------------//------------------------------------------------------/*SET WINDOW'S ADDITIONAL PROPERTIES*///----------------------------------------------------------------------------------/*WINDOW OPENS AT START*/ OPEN_ON_INIT, /*(OOI)*//*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*//*MARGINS OF THE WINDOW*/ MARGINS, 40,40,/*Х, Y*///----------------------------------------------------------------------------------////----------------------------------------------------------------------------------//1. DECLARE A GROUP WITH AN ABSTRACT NAME A.//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL __, //3. DECLARE A BUTTON AND WRITE IT'S NAME.//4. END GROUP WITH THE KEYWORDS END_GROUP,//------------------------------------------------------
GROUP, "Buttons group",
__, BUTTON, "Press to open", W, 150,
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): //----------------------------"Press to open", OPENS_WINDOW,"Just a window",//opens the window by the keyword "Press to open", N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------//FINISH THE WINDOW BY KEYWORDS END_WINDOW,//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
让我们来解析表达式 _Y2H:
Y 到高度。
在坐标系中,从物体的 Y 点沿其主体移动一段与物体高度(y_size)相等的距离,就会到达物体的最低点。要折叠对象的 Y 坐标必须沿着要折叠对象的高度下降,并最终到达其底部。也就是说,它必须覆盖锚点对象的高度距离,因此锚点被称为 _Y2H。
2._X2H 不 存在,因为 X 坐标只能在水平面内抓取,不能在垂直面内抓取,而 H 代表高度。有一种 _X2W 抓取方式,即把 X 坐标抓取到指定对象的 X + X_SIZE(宽度)点。
关于捕捉的话题,我们将在后面详细讨论。
昨天我们已经开始讨论枚举,今天我们就来完成枚举。
关于绑定问题,我想补充一点,这里有严格的规定,现在尝试尝试是没有意义的。请等待更完整的解释。
有些绑定可单独用于元素组,有些绑定可用于组内的单个元素。还有一些绑定适合在元素中定位对象(如文本或图标)。
我们稍后再讨论这个问题。
昨天我们已经开始讨论枚举,今天我们就来完成枚举。
不过,经过深思熟虑,我决定推迟完成枚举这一主题。理解本主题的后续材料需要语言规则的基础知识,而读者还不具备这些知识。
现在,让我们继续熟悉控件和绑定。
到目前为止,在大多数情况下,我们处理的都是一个简单的BUTTON 按钮。每个人都知道按钮是什么,这一点不言自明。不过,我们还是应该详细了解一下。这同样适用于我们之前使用过的其他元素。让我们这样做吧:首先,让我们介绍一下按钮的主要特点和功能,概括性地介绍一下所有内容,然后我们再分别对每个元素进行更详细的讨论。
按钮是一种在按下时会改变状态的交互式元素。在图形界面 中,按钮有不同的用途。大多数情况下,按钮是用来打开或关闭某样东西的,但有时也用来调用窗口。一个简单按钮的应用有很多变体。它是一个相当通用的元素。
我们还考虑过哪些元素?例如,复选框。为什么需要复选框?要在程序设置中启用、禁用或阻止选项,就必须使用复选框。如果需要在多个选项中进行选择,R_BUTTON(单选按钮)元素就很合适。但前提是只有几个选项。
如果选项很多,但又不是太多?那么就可以使用D_LIST 下拉列表 或C_LIST 组合列表。D_LIST 有这样的字 段,而 C_LIST没有。
如果程序中的选项过多,该怎么办呢?下拉列表由于尺寸较小,会让人感觉不舒服。解决办法是在大窗口中使用长滚动表。您可以在设计器的字体、声音 和框架 窗口中看到例子。
但是,这些列表需要滚动条,因为它们非常长。这就是为什么要为它们设计一个特殊元素的原因。"视野" V_BOX。这是一个简单的元素,有两个滚动条和自己的画布。顺便说一下,它可以垂直 和 水平 滚动。画布的大小是通过计算放置的内容自动设置的。
列表项称为L_ITEM,是"列表项"的简称。它们被收集在一个单独的组中,并绘制在指定视场的画布上。每个项目都被称为菜单项或选项的名称,它们可以用一个 SWITCH_ALL 关键字进行切换。要将L_ITEM 项目列表输入V_BOX 概览区域,需要使用关键字"IN"。定位很简单--LEFT_TOP, 0,0,。
接下来,让我们按照同样的顺序详细了解一下列出的元素。我们将讨论定位、状态、属性和属性。
......我们还将考虑在交易程序中的应用选项。
普通按钮:BUTTON
4 种构造函数按钮:
与其他经典按钮一样,它的外观相对陈旧,功能简单。有一个图标。
//-------------------------------------------------------------------------------------------------------------------------------------
一个漂亮的交互式按钮,可以流畅地响应光标的悬停/移动。它与普通按钮一样使用,但不太明显,而且在中性状态下没有轮廓边框。大多不带文字,但有图标。形状多为正方形。
//-------------------------------------------------------------------------------------------------------------------------------------
主要用于主窗口头部的工具栏。通常没有文字,但有图标,形状通常为正方形。悬停在光标上时与光标保持一致。可调用窗口或功能。带有箭头。
//-------------------------------------------------------------------------------------------------------------------------------------
位于对话框底部,用于与用户交互。它包含"确定"、"是"、"否"、"取消"、"中止"、"继续"、"接受"、"下一步"、"上一步"、"跳过"、"确认"、"打开"、"关闭"、.... 等文本。及其他同类文字。
您可以为所有按钮设置图标和文字,还可以为不同状态设置颜色。
同时,按钮还可以根据状态改变文字和图标。中性状态下的文字或图标与激活状态下的文字或图标不同。
例如
所有按钮都被按下,处于中性状态:
现在我们按下它们,它们的文字和图标都发生了变化:(对话按钮除外,因为它在按下后会关闭窗口,没有必要按下)
交互式按钮的文本叠加在图标上,这样设计是因为图标和文本都可以放在按钮内。
因此,按钮可以在点击时更改文本。此外,文本和按钮名称是不同的。中立状态的文本可以设置为 N_TEXT,这样就会出现另一个用户文本,而不是按钮名称。
图标也是如此。您可以为中立状态和激活状态指定一个图标。
代码
按钮的主要功能之一或许就是调用窗口。按下一个窗口中的按钮,另一个窗口就会打开。
这是如何实现的呢?
有两种方法:
需要注意的是:将按钮或菜单项的名称与窗口名称相匹配,会导致在单击这些项目时打开这些窗口。
第二种变体
结果: