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

 
hini #:
여기서 강제 유형 변환, 사용자가 함수 외부에 (문자열을) 쓸 필요가 없도록 함수 안에 넣을 수 있습니까?

질문을 실제로 이해하지 못했기 때문에 내 대답은 주제에서 벗어날 수 있습니다.

다음과 같이 할 수 있습니다:


이중 함수는 값 반환 단계에서 강제 변환을 사용하여 문자열 유형의 변수로 반환합니다.
string Spin_edit_value = (string)w6_d_p5_S_EDIT_Spin_the_value();

w7_s_p4_EDIT_Comment_2(Spin_edit_value);
 

더 간단하게 만들 수 있습니다:

w7_s_p4_EDIT_Comment_2((string)w6_d_p5_S_EDIT_Spin_the_value());
 

이론적으로는 이렇게 할 수 있습니다:

w7_s_p4_EDIT_Comment_2(w6_d_p5_S_EDIT_Spin_the_value());

컴파일러 자체에서 이중을 문자열로 변환하지만 권장하고 싶지는 않습니다.

 
Реter Konow #:

질문을 잘 이해하지 못해서 제 답변이 주제에서 벗어날 수 있습니다.

다음과 같이 할 수 있습니다:


double 함수는 값 반환 단계에서 강제 변환을 통해 문자열 유형의 변수를 반환합니다.
그런 다음 w7_s_p4_EDIT_Comment_2 함수 내부에서 유형을
double Spin_edit_value = 22.5;

w7_s_p4_EDIT_Comment_2(Spin_edit_value);
 
Реter Konow #:

이론적으로는 가능합니다:

컴파일러 자체에서 더블을 문자열로 변환하지만 권장하지는 않습니다.

w7_s_p4_EDIT_Comment_2 함수가 이중 유형을 수신하는 해당 오버로드된 버전을 생성할 수 없나요?

 

속성 설정과 요소 간 값 반환 및 전달에 대한 주제를 계속 이어갑니다.


몇 가지 옵션을 살펴보았습니다:

1. 텍스트 입력 필드에 텍스트를 설정합니다.

w7_s_p4_EDIT_Comment_1("Some random text");

2. 슬라이더에 새 값 할당하기.

w6_i_p3_H_SLIDER_Roll_the_value(33);

3. 3. 버튼으로 입력 필드에 임의의 숫자를 선택합니다.

w6_d_p5_S_EDIT_Spin_the_value(423.11);

4. 계정 정보 테이블의 셀에 여러 개의 텍스트 문자열을 보냅니다.

w8_s_p4_CELL_Account_name__Value("MyRealAccount");  

w8_s_p4_CELL_Account_number__Value("A001234647843B1");

w8_s_p4_CELL_Account_server__Value("MyServer");

w8_s_p4_CELL_Account_currency__Value("US Dollar");

w8_s_p4_CELL_Leverage__Value("1:1");

w8_s_p4_CELL_Account_balance__Value("1234567.23 $");


5. 마지막으로 S_EDIT 요소의 새 값을 반환하여 계정 정보 테이블의 셀과 설정예제 2의 텍스트 입력 필드 등 두 개의 다른 창으로 보냈습니다.

 double Spin_edit_value = w6_d_p5_S_EDIT_Spin_the_value();//Делаем возврат значения параметра (тип double).
w8_s_p4_CELL_Account_profit__Value((string)Spin_edit_value);//При пересылке значение double приводим к типу string. Функция ячейки имеет тип string.
w7_s_p4_EDIT_Comment_2((string)Spin_edit_value);

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


이 주제를 완료하고 다음 주제로 넘어가려면 몇 가지 작업을 수행해야 합니다:

1. 슬라이더 바의 색상을 변경합니다.

2. S_EDIT 기본 및 텍스트의 색상을 변경합니다.

3. 누른 상태와 누르지 않은 상태의 버튼 색상을 변경합니다.

4. 타이머 이벤트에서 요소로 값 전송을 확인합니다.

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


1. 슬라이더 바의 색상을 변경합니다:

   //To get slider's bar color:
   uint Sliders_bar_color = (uint)w6_i_p3_H_SLIDER_Roll_the_value(get_i, p3_COLOR_bar);
   
   //Print the returned value:
   Print("Sliders_bar_color =  ",Sliders_bar_color);

결과:



슬라이더 바에 다른 색상을 지정합니다:

   //To set slider's bar color:
   w6_i_p3_H_SLIDER_Roll_the_value((uint)clrRed, p3_COLOR_bar);


결과

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


2 텍스트의 색상과 S_EDIT 요소의 밑부분을 변경합니다:

버튼이 있는 입력 필드의 밑부분의 원래 색상을 가져와 보겠습니다:

   //To get spin edit's base color:
   uint Spin_edit_base_color = (uint)w6_d_p5_S_EDIT_Spin_the_value(get_d, p5_COLOR_base);

로그에 출력합니다:

   //Print the returned value:
   Print("Spin_edit_base_color = ",Spin_edit_base_color);


필드 바닥에 다른 색상을 지정합니다:

   //To set spin edit's base color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrLightGreen, p5_COLOR_base);

결과:


S_EDIT 필드의 텍스트 색상이 설정되었습니다. ( S_EDIT의 텍스트 색상 속성을 추가하는 것을 잊어버려서 속성 접두사 p4가 p5 대신 사용되었습니다. 다음 버전에서 버그가 수정될 예정입니다).

   //To set spin edit's text color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrBrown, p4_COLOR_text);  


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


3. 눌린 상태와 눌리지 않은 상태의 버튼 색상을 변경합니다:

중립 상태에서 버튼의 색상을 변경합니다:

w6_i_p1_BUTTON_Start((uint)C'255,166,0',p1_N_COLOR_base);


버튼의 활성화 상태에 대해 다른 색상을 설정합니다:

w6_i_p1_BUTTON_Start((uint)C'166,255,0',p1_A_COLOR_base);


중립 상태와 눌린 상태의 버튼 텍스트 색상을 변경할 수도 있지만 작은 글꼴에서는 눈에 띄지 않습니다. 따라서 다른 창을 선택해 보겠습니다:

   //Set text color for button's neutral state:

   //Button 1:
   w14_i_p1_BUTTON_BUY_OFF((uint)C'240,70,10',p1_N_COLOR_text);

   //Button 2:
   w14_i_p1_BUTTON_SELL_OFF((uint)C'240,70,10',p1_N_COLOR_text); 

결과:


   //Set text color for button's active state:
   
  //Button 1
   w14_i_p1_BUTTON_BUY_OFF((uint)C'105,240,50',p1_A_COLOR_text);

  //Button 2
   w14_i_p1_BUTTON_SELL_OFF((uint)C'105,240,50',p1_A_COLOR_text);

Result:


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


4. 타이머 이벤트의 요소에 대한 값 전송을 확인합니다:

void _OnTimer()
  {
   string Microseconds = (string)GetMicrosecondCount();
     
   //Send Microseconds to each cell-----------------
   w8_s_p4_CELL_Account_name__Value(Microseconds);
   w8_s_p4_CELL_Account_number__Value(Microseconds);
   w8_s_p4_CELL_Account_server__Value(Microseconds);
   w8_s_p4_CELL_Account_currency__Value(Microseconds);
   w8_s_p4_CELL_Leverage__Value(Microseconds);
   w8_s_p4_CELL_Account_balance__Value(Microseconds);
   w8_s_p4_CELL_Account_profit__Value(Microseconds);
   w8_s_p4_CELL_Account_equity__Value(Microseconds);
   w8_s_p4_CELL_Account_free_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_stop_out_level__Value(Microseconds);

Result:


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

이것으로 이 주제를 마칩니다.


다음 주제로 넘어가겠습니다:

9. 이전 값 반환(_V_LAST). 언제, 어떤 경우에 마지막 값이 필요한지(현재 값과 혼동하지 마세요).

10. 다양한 유형의 요소에 대한 ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK 상태 설정을 테스트합니다.

 
hini #:

w 7_s_p4_EDIT_Comment_2 함수 내에서 다음 유형을 변환합니다.

할 수 있습니다. 하지만 암시적 유형 변환이므로 추가 경고가 표시됩니다. 기술적으로는 숫자만 보내면 됩니다. 변수 없이요. 각자의 재량에 맡기겠습니다.

 
hini #:

w 7_s_p4_EDIT_Comment_2 함수 내에서 다음 유형을 변환합니다.

w7_s_p4_EDIT_Comment_2 함수 안에는 아무것도 없습니다. 중앙 함수를 호출하는 래퍼입니다. 그리고 래퍼 함수는 자체 타입의 값만 반환할 수 있습니다.



h ini #: w7_s_p4_EDIT_Comment_2 함수가 double 유형을 취하는 해당 오버로드된 버전을 생성할 수 없나요?

아쉽게도 래퍼이기 때문에 불가능합니다. 복잡하게 만들 필요가 없습니다. 모든 작업은 중앙 함수에 의해 수행됩니다.
 
Реter Konow #:

w7_s_p4_EDIT_Comment_2 함수에는 내부에 아무것도 없습니다. 중앙 함수를 호출하는 래퍼일 뿐입니다. 래퍼 함수는 자체 타입의 값만 반환할 수 있습니다.


래퍼 함수이기 때문에 그럴 수 없습니다. 복잡하게 만들 필요가 없습니다. 모든 작업은 중앙 함수가 수행합니다.

맞습니다.

 

오늘은 네 가지 주제를 살펴보겠습니다:

9. 이전 _V_LAST 값 반환하기 .

10. 다양한 유형의 요소에 대한 ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK 상태 설정하기.

11. 매개변수 변경 동기화: 버튼과 슬라이더가 있는 입력 필드. 첫 번째 값이 변경되면 두 번째 값도 그에 따라 변경되는 것이 목표입니다. 먼저 한 창에서 통신을 설정한 다음 창 간에 통신을 설정해 보겠습니다.

12. 슬라이더와 버튼이 있는 필드의 범위 경계를 프로그래밍 방식으로 재설정합니다.

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

지금까지 다음 주제를 다루었습니다:

1. 인텔리센스 목록에서 방향을 정하고 원하는 창의 기능을 선택합니다.

2. 소프트웨어 창 열기 및 닫기.

3. 인텔리센스 목록의 방향 및 필요한 창에서 필요한 요소 선택.

4. 개별 요소 속성 목록 탐색.

5. 요소 및 창 래퍼 함수의 이름 구문 분석.

선택한 요소의 매개변수 값을 해당 유형의 변수로 반환하기. 여러 가지 요소의 세 가지 유형을 고려합니다.

7. 서로 다른 유형의 요소의 매개변수에 값 설정하기. 이러한 요소의 인터페이스 창에 값이 어떻게 표시되는지 살펴봅시다.

8. 한 요소의 매개변수 값을 반환하고 해당 값을 수정하여 다른 요소로 전달하기. 다양한 유형의 요소와 값을 고려하고 서로 다른 창에서 서로 다른 유형의 요소 간 전달을 테스트해 보세요.

9. 이전 값(_V_LAST) 반환하기. 언제, 어떤 경우에 마지막 값이 필요한지(현재 값과 혼동하지 마세요).

10. 다양한 유형의 요소에 대한 켜기/끄기/잠금/잠금 해제 상태의 설정을 테스트합니다.

11. 버튼과 슬라이더가 있는 입력 필드와 같이 서로 다른 유형의 요소의 값 변경을 연결하고 동기화해 봅시다. 한 요소(수동 또는 소프트웨어)의 값이 변경되면 두 번째 요소의 값도 그에 따라 변경된다고 가정해 봅시다.

12. 래퍼 함수를 통해 슬라이더와 버튼이 있는 입력 필드의 범위 경계를 프로그래밍 방식으로 재설정해 보겠습니다. 테스트 할 시간이 없었지만 작동 할 것이라고 제안합니다. 하지만 두고 봅시다.

13. 래퍼 함수를 통해 요소 상태를 반환해 보겠습니다. 기능에 포함되어 있지만 테스트할 시간이 없었습니다. 그럼 어디 보자... 결과는 알 수 없습니다.

14. 텍스트와 요소의 기본 색상을 가져와 설정해 봅시다. 이 색상을 간단한 이벤트나 값 경계와 연관시켜 볼 수 있습니다.

15. 새 API 파일 출력물을 탐색하고 읽는 방법에 대해 자세히 설명하겠습니다.