버튼 도전! - 페이지 7 12345678 새 코멘트 Vladimir Pastushak 2015.09.23 13:20 #61 Karputov Vladimir : 아마도 테스트 코드를 첨부할 시간입니다. 이렇게 하면 실험하기가 더 쉬워집니다. 여기 //+------------------------------------------------------------------+ //| Button.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { ButtonCreate( 0 , "A" , 0 , 20 , 50 , 100 , 20 , CORNER_LEFT_UPPER , "Button A" ); ButtonCreate( 0 , "B" , 0 , 20 , 80 , 100 , 20 , CORNER_LEFT_UPPER , "Button B" ); if (( bool ) ObjectGetInteger ( 0 , "A" , OBJPROP_STATE )== true ) ObjectSetInteger ( 0 , "B" , OBJPROP_STATE , false ); if (( bool ) ObjectGetInteger ( 0 , "B" , OBJPROP_STATE )== true ) ObjectSetInteger ( 0 , "A" , OBJPROP_STATE , false ); } //+------------------------------------------------------------------+ bool ButtonCreate( const long chart_ID= 0 , // ID графика const string name= "Button" , // имя кнопки const int sub_window= 0 , // номер подокна const int x= 0 , // координата по оси X const int y= 0 , // координата по оси Y const int width= 50 , // ширина кнопки const int height= 18 , // высота кнопки const ENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // угол графика для привязки const string text= "Button" , // текст const string font= "Arial" , // шрифт const int font_size= 10 , // размер шрифта const color clr= clrBlack , // цвет текста const color back_clr= C'236,233,216' , // цвет фона const color border_clr= clrNONE , // цвет границы const bool state= false , // нажата/отжата const bool back= false , // на заднем плане const bool selection= false , // выделить для перемещений const bool hidden= true , // скрыт в списке объектов const long z_order= 0 ) // приоритет на нажатие мышью { //--- сбросим значение ошибки ResetLastError (); //--- создадим кнопку if ( ObjectCreate (chart_ID,name, OBJ_BUTTON ,sub_window, 0 , 0 )) { //--- установим координаты кнопки ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x); ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y); //--- установим размер кнопки ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width); ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner); //--- установим текст ObjectSetString (chart_ID,name, OBJPROP_TEXT ,text); //--- установим шрифт текста ObjectSetString (chart_ID,name, OBJPROP_FONT ,font); //--- установим размер шрифта ObjectSetInteger (chart_ID,name, OBJPROP_FONTSIZE ,font_size); //--- установим цвет текста ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr); //--- установим цвет фона ObjectSetInteger (chart_ID,name, OBJPROP_BGCOLOR ,back_clr); //--- установим цвет границы ObjectSetInteger (chart_ID,name, OBJPROP_BORDER_COLOR ,border_clr); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back); //--- переведем кнопку в заданное состояние ObjectSetInteger (chart_ID,name, OBJPROP_STATE ,state); //--- включим (true) или отключим (false) режим перемещения кнопки мышью ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection); ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order); } //--- успешное выполнение return ( true ); } //+------------------------------------------------------------------+ 해결책이 있기를 바랍니다.. Vladimir Suslov 2015.09.23 13:37 #62 Vladimir Pastushak : 시간을 어디에 쓸까? 각 버튼에 시간을 저장할 변수를 만드시겠습니까? 모두 감사합니다. 문제가 해결되었습니다. 더 쉬운 방법을 찾았습니다. 앉아서 궁금해... TS는 두 번째 페이지에서 솔루션을 찾았습니다. https://www.mql5.com/en/forum/64408/page2#comment_1923439 그리고 공유하지 않았다 Задача с кнопками ! www.mql5.com Задача : При нажатии на любую из кнопок предыдущая нажатая кнопка должна отжаться. - Страница 2 - Категория: общее обсуждение Vladimir Pastushak 2015.09.23 13:43 #63 Event : TS는 두 번째 페이지에서 솔루션을 찾았습니다. https://www.mql5.com/en/forum/64408/page2#comment_1923439 그리고 공유하지 않았다 누군가 더 나은 것을 제안 할 수 있습니까? Ilyas 2015.09.23 13:48 #64 물론 미안하지만 나는 항상 코드에 놀란다. bool b; if (b== true ) ... 나는 그것을 추가하고 싶습니다 : bool b; if (b== true ) { ... } else { if (b== false ) ... else // не true и не false - что-то другое } Vladimir Pastushak 2015.09.23 13:57 #65 Ilyas : 물론 미안하지만 나는 항상 코드에 놀란다. 나는 그것을 추가하고 싶습니다 : 이것은 테스트 용 샘플이며 결함을 찾지 마십시오 ... Alexey Volchanskiy 2015.09.23 14:49 #66 Vladimir Pastushak : 테스터에서 작동하지 않습니다 ... 무슨 터미널이야? MT5에서는 테스터에서 타이머가 작동하여 확인할 수 있습니다. MT4에서는 타이머도 작동하지 않습니다(( Rorschach 2015.09.23 14:53 #67 하나의 버튼만 눌러지기 때문에 하나의 정적 변수 를 생략할 수 있습니다. 누른 버튼이 기억되고 각 틱마다 비교가 있습니다. 차이가 있으면 버튼이 메모리에서 해제되고 새 값이 저장됩니다. Vladimir Pastushak 2015.09.23 16:46 #68 그리고 모든 간단한 2x2 솔루션이 고문과 함께 어디론가 사라졌습니다... Koldun Zloy 2015.09.24 10:44 #69 bool stateA = false; bool stateB = false; bool stateC = false; int init() { ButtonCreate( 0, "A", 0, 20, 50, 100, 20, CORNER_LEFT_UPPER, "Button A" ); ButtonCreate( 0, "B", 0, 20, 80, 100, 20, CORNER_LEFT_UPPER, "Button B" ); ButtonCreate( 0, "C", 0, 20, 110, 100, 20, CORNER_LEFT_UPPER, "Button C" ); return 0; } void OnTick() { if( stateA != (bool)ObjectGetInteger( 0, "A", OBJPROP_STATE ) ) { stateA = true; stateB = false; stateC = false; ObjectSetInteger( 0, "B", OBJPROP_STATE, false ); ObjectSetInteger( 0, "C", OBJPROP_STATE, false ); } if( stateB != (bool)ObjectGetInteger( 0, "B", OBJPROP_STATE ) ) { stateA = false; stateB = true; stateC = false; ObjectSetInteger( 0, "A", OBJPROP_STATE, false ); ObjectSetInteger( 0, "C", OBJPROP_STATE, false ); } if( stateC != (bool)ObjectGetInteger( 0, "C", OBJPROP_STATE ) ) { stateA = false; stateB = false; stateC = true; ObjectSetInteger( 0, "A", OBJPROP_STATE, false ); ObjectSetInteger( 0, "B", OBJPROP_STATE, false ); } } Vladimir Pastushak 2015.09.24 10:47 #70 static int t=0; void OnTick() { ButtonCreate( 0, "A", 0, 20, 50, 100, 20, CORNER_LEFT_UPPER, "Button A" ); ButtonCreate( 0, "B", 0, 20, 80, 100, 20, CORNER_LEFT_UPPER, "Button B" ); ButtonCreate( 0, "C", 0, 20, 110, 100, 20, CORNER_LEFT_UPPER, "Button C" ); if( (bool)ObjectGetInteger( 0, "A", OBJPROP_STATE ) && t!=0) { t=0; ObjectSetInteger( 0, "B", OBJPROP_STATE, false ); ObjectSetInteger( 0, "C", OBJPROP_STATE, false ); } if( stateB != (bool)ObjectGetInteger( 0, "B", OBJPROP_STATE ) && t!=1 ) { t=1; ObjectSetInteger( 0, "A", OBJPROP_STATE, false ); ObjectSetInteger( 0, "C", OBJPROP_STATE, false ); } if( stateC != (bool)ObjectGetInteger( 0, "C", OBJPROP_STATE ) && t!=2 ) { t=2; ObjectSetInteger( 0, "A", OBJPROP_STATE, false ); ObjectSetInteger( 0, "B", OBJPROP_STATE, false ); } } 12345678 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
아마도 테스트 코드를 첨부할 시간입니다. 이렇게 하면 실험하기가 더 쉬워집니다.
여기
해결책이 있기를 바랍니다..
시간을 어디에 쓸까? 각 버튼에 시간을 저장할 변수를 만드시겠습니까?
모두 감사합니다. 문제가 해결되었습니다. 더 쉬운 방법을 찾았습니다. 앉아서 궁금해...
TS는 두 번째 페이지에서 솔루션을 찾았습니다. https://www.mql5.com/en/forum/64408/page2#comment_1923439
그리고 공유하지 않았다
TS는 두 번째 페이지에서 솔루션을 찾았습니다. https://www.mql5.com/en/forum/64408/page2#comment_1923439
그리고 공유하지 않았다
나는 그것을 추가하고 싶습니다 :
물론 미안하지만 나는 항상 코드에 놀란다.
나는 그것을 추가하고 싶습니다 :
테스터에서 작동하지 않습니다 ...
하나의 버튼만 눌러지기 때문에 하나의 정적 변수 를 생략할 수 있습니다.
누른 버튼이 기억되고 각 틱마다 비교가 있습니다. 차이가 있으면 버튼이 메모리에서 해제되고 새 값이 저장됩니다.