MQL로 작성된 UI 갤러리 - 페이지 35

 
//--------------------------
//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): 

//------------------------------------------------------
 
_Y2H 是什么,是否有 _X2H ?
 
hini #: _Y2H Что это такое, и есть ли это _X2H?

표현식 _Y2H를 파싱해 보겠습니다:

  • Y는 좌표입니다.
  • 2는 "to"를 의미합니다. 무언가를 나타냅니다.
  • H는 높이의 줄임말입니다.

Y에서 높이로.

좌표계에서 물체의 Y 지점에서 몸체를 따라 물체의 높이(y_size)와 같은 거리만큼 이동하면 가장 낮은 지점으로 연결됩니다. 스냅할 객체의 Y 좌표는 스냅할 객체의 높이를 따라 내려가 하단에서 끝나야 합니다. 즉, 앵커 객체의 높이 거리를 포함해야 하므로 앵커를 _Y2H라고 합니다.


X 좌표는 수직면이 아닌 수평면에서만 스냅할 수 있고, H는 높이를 의미하므로 _X2H는 존재하지 않습니다 . X 좌표가 지정된 객체의 X + X_SIZE(너비) 지점에 스냅된다는 의미의 _X2W 스냅이 있습니다.


스냅에 대한 주제는 나중에 자세히 설명하겠습니다.

 

오늘은 어제 이야기했던 열거형에 대해 마무리하겠습니다.

 

바인딩에 대한 주제에 대해서는 엄격한 규칙이 있으며 지금 실험을 시도하는 것은 의미가 없다고 덧붙일 것입니다. 더 완전한 설명을 기다리세요.

요소 그룹에 대해 개별적으로 작동하는 바인딩과 그룹 내의 개별 요소에 대해 작동하는 바인딩이 있습니다. 텍스트나 아이콘과 같이 요소 내에서 객체를 배치하는 데 적합한 바인딩도 있습니다.

이에 대해서는 나중에 설명하겠습니다.

 
Реter Konow #:

오늘은 어제 이야기했던 열거형에 대해 마무리하겠습니다.

그러나 신중하게 생각한 끝에 열거형 주제에 대한 완성을 연기하기로 결정했습니다. 이 주제의 추가 자료를 이해하려면 언어 규칙에 대한 기본 지식이 필요한데, 아직 독자들이 가지고 있지 않기 때문입니다.

지금은 컨트롤과 바인딩에 대해 계속 알아 봅시다.

 

지금까지 대부분의 경우 간단한 버튼 버튼을 다루었습니다. 버튼이 무엇인지 누구나 알고 있으며 설명이 필요 없습니다. 하지만 좀 더 자세히 살펴볼 가치가 있습니다. 앞서 작업한 다른 요소에도 동일하게 적용됩니다. 먼저 주요 특징과 기능을 살펴보고 일반적인 용어로 모든 것을 살펴본 다음 각 요소를 개별적으로 고려하여 더 자세히 살펴 보겠습니다.

따라서 버튼은 누르면 상태가 변경되는 대화형 요소입니다. 그래픽 인터페이스에서는 다양한 용도로 사용됩니다. 대부분 무언가를 켜거나 끄는 데 사용되지만 때로는 창을 호출하는 데 사용되기도 합니다. 간단한 버튼의 응용 프로그램의 변형은 많이 있습니다. 그것은 꽤 보편적 인 요소입니다.

다른 어떤 요소를 고려했나요? 예를 들어, 체크 박스. 왜 체크 박스가 필요합니까? 프로그램 설정에서 옵션을 활성화, 비활성화 또는 차단하려면 확인란이 필요합니다. 여러 옵션 중에서 선택해야 하는 경우 R_BUTTON(라디오 버튼) 요소가 적합합니다. 그러나 몇 가지 옵션 만있는 조건에서.

그리고 옵션이 상당히 많지만 지나치게 많지는 않다면? 그런 다음 D_LIST 드롭다운 목록 또는 C_LIST 콤보 목록이 사용됩니다. 이 두 요소의 차이점은 사용자가 원하는 선택을 입력할 수 있는 텍스트 입력 필드의 유무입니다. D_LIST에는 이러한 필드가 있지만 C_LIST에는없습니다.

프로그램에 옵션이 너무 많으면 어떻게 해야 하나요? 드롭다운 목록은 크기가 작기 때문에 불편합니다. 해결책은 큰 창에서 긴 스크롤 가능한 시트입니다. 디자이너의 글꼴, 사운드프레임 창에서 예시를 볼 수 있습니다.

그러나 이러한 목록은 매우 길기 때문에 스크롤 막 대가 필요합니다. 그래서 이들을 위한 특별한 요소가 있습니다."시야" V_BOX. 두 개의 스크롤 막대와 자체 캔버스가있는 간단한 요소입니다. 그건 그렇고, 스크롤은 수직 수평 모두입니다. 그리고 캔버스의 크기는 배치 된 콘텐츠의 계산에서 자동으로 설정됩니다.

목록 항목은"목록 항목"의 줄임말인 L_ITEM이라고 합니다. 이들은 별도의 그룹으로 수집되어 지정된 시야의 캔버스에 그려집니다. 각 항목은 메뉴 항목 또는 옵션의 이름이라고 하며 하나의 SWITCH_ALL 키워드로 전환됩니다. 그리고 V_BOX 개요 필드에 L_ITEM 항목 목록을 입력할 때는 키워드"IN"이 사용됩니다. 위치 지정은 간단합니다 - LEFT_TOP, 0,0,.


다음으로 나열된 요소를 동일한 순서로 더 자세히 살펴 보겠습니다. 포지셔닝, 상태, 속성 및 속성에 대해 이야기하겠습니다.

...그리고 트레이더 프로그램의 맥락에서 적용 옵션을 고려할 것입니다.

 

일반 버튼: 버튼

생성자 버튼은 4가지 종류가 있습니다:

일반 버튼과 마찬가지로 비교적 구식이며 기능이 단순합니다. 아이콘이 있습니다.


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

  • 대화형 버튼 I_BUTTON - 대화형 버튼:

커서를 가져가거나 멀리 이동하면 부드럽게 반응하는 아름다운 대화형 버튼입니다. 일반 버튼으로 사용되지만 눈에 잘 띄지 않고 중립 상태에서는 윤곽선이 없는 테두리가 있습니다. 대부분 텍스트가 없고 아이콘이 있습니다. 더 자주 정사각형 모양입니다.


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

  • 툴바 버튼(MT4에서와 동일) TB_BUTTON - 툴바 버튼:

주로 메인 창 헤더의 도구 모음에 사용됩니다. 텍스트가 없는 경우가 많지만 아이콘이 있고 보통 사각형 모양입니다. 커서를 가리키면 커서에 고정됩니다. 창 또는 기능을 호출합니다. 화살표가 있습니다.


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

  • D_BUTTON - 대화 상자 버튼입니다:

대화 상자 하단에 표시되어 사용자와 상호 작용합니다. "확인", "예", "아니오", "취소", "중단", "계속", "수락", "다음", "이전", "건너뛰기", "확인", "열기", "닫기"와 같은 텍스트를 전달합니다 .... 및 이 장르의 다른 단어들.


모든 버튼에 아이콘과 텍스트를 설정할 수 있을 뿐만 아니라 다양한 상태의 색상을 설정할 수 있습니다.

동시에 버튼은 상태에 따라 텍스트와 아이콘을 변경할 수 있습니다. 중립 상태에서는 하나의 텍스트 또는 아이콘이, 활성화 상태에서는 다른 텍스트 또는 아이콘이 표시됩니다.


예를 들어

모든 버튼이 눌려 있고 중립 상태입니다:


이제 버튼을 눌렀고 텍스트와 아이콘이 변경되었습니다: (대화 버튼은 눌렀을 때 창이 닫히고 필요하지 않으므로 제외).


대화형 버튼의 텍스트는 아이콘 위에 겹쳐져 있지만, 아이콘과 텍스트를 버튼 안에 배치할 수 있기 때문에 그렇게 디자인되었습니다.

 

따라서 버튼은 클릭 시 텍스트가 변경될 수 있습니다. 또한 텍스트와 버튼 이름은 서로 다른 것입니다. 중립 상태의 텍스트는 N_TEXT라는 단어로 설정할 수 있으며, 버튼 이름 대신 다른 사용자 텍스트가 표시됩니다.

아이콘도 마찬가지입니다. 중립 상태와 활성 상태에 대한 아이콘을 지정할 수 있습니다.


코드:

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,
//----------------------------------------------------------------------------------
 

버튼의 주요 기능 중 하나는 창을 호출하는 것입니다. 한 창에서 버튼을 누르면 다른 창이 열립니다.

어떻게 할 수 있을까요?

두 가지 방법이 있습니다:

  • 버튼 속성에 OPENS_WINDOW 키워드를 입력한 다음 호출할 창의 이름을 입력합니다.
  • 또는 버튼의 이름을 호출할 창과 동일하게 지정하고 버튼 텍스트를 숨깁니다. 또는 버튼 텍스트를 N_TEXTA_TEXT라는 단어로 덮어씁니다.

주의할 점은 버튼 또는 메뉴 항목의 이름을 창 이름과 일치시키면 해당 항목을 클릭하면 해당 창이 열리게 됩니다.

//+------------------------------------------------------------------+
//|                                              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,
//----------------------------------------------------------------------------------



결과: