Düğme meydan okuması! - sayfa 7 12345678 Yeni yorum Vladimir Pastushak 2015.09.23 15:20 #61 Karputov Vladimir : Belki de test kodunu eklemenin zamanı gelmiştir. Bu, denemeyi kolaylaştıracaktır. Burada //+------------------------------------------------------------------+ //| 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 ); } //+------------------------------------------------------------------+ umarım çözümler bulunur.. Vladimir Suslov 2015.09.23 15:37 #62 Vladimir Pastushak : Zaman nereye yazılır? Her düğme için zamanı saklamak için değişkenler oluşturun? Hepinize teşekkürler, sorun çözüldü, daha kolay bir yol buldum. oturup merak ediyorum... TS ikinci sayfada bir çözüm buldu https://www.mql5.com/en/forum/64408/page2#comment_1923439 ve paylaşmadı Задача с кнопками ! www.mql5.com Задача : При нажатии на любую из кнопок предыдущая нажатая кнопка должна отжаться. - Страница 2 - Категория: общее обсуждение Vladimir Pastushak 2015.09.23 15:43 #63 Event : TS ikinci sayfada bir çözüm buldu https://www.mql5.com/en/forum/64408/page2#comment_1923439 ve paylaşmadı biri daha iyisini önerebilir mi... Ilyas 2015.09.23 15:48 #64 Üzgünüm elbette, ama koda her zaman şaşırırım bool b; if (b== true ) ... eklemek isterim: bool b; if (b== true ) { ... } else { if (b== false ) ... else // не true и не false - что-то другое } Vladimir Pastushak 2015.09.23 15:57 #65 Ilyas : Üzgünüm elbette, ama koda her zaman şaşırırım eklemek isterim: Bu testler için bir örnektir, hata bulma... Alexey Volchanskiy 2015.09.23 16:49 #66 Vladimir Pastushak : test cihazında çalışmıyor... Hangi terminal bu? MT5'te, test cihazında bir zamanlayıcı çalışır, kontrol edebilirsiniz. MT4'te zamanlayıcı da çalışmıyor (( Rorschach 2015.09.23 16:53 #67 Yalnızca bir düğmeye basıldığından, bir statik değişkenden vazgeçilebilir. Basılan düğme hatırlanır, ardından her tikte bir karşılaştırma yapılır. Fark varsa buton hafızadan çıkarılır ve yeni değer kaydedilir. Vladimir Pastushak 2015.09.23 18:46 #68 Ve her yerde, danışmanlarla birlikte tüm basit 2x2 çözümleri gitti ... [Silindi] 2015.09.24 12: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 12: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 Yeni yorum
Belki de test kodunu eklemenin zamanı gelmiştir. Bu, denemeyi kolaylaştıracaktır.
Burada
umarım çözümler bulunur..
Zaman nereye yazılır? Her düğme için zamanı saklamak için değişkenler oluşturun?
Hepinize teşekkürler, sorun çözüldü, daha kolay bir yol buldum. oturup merak ediyorum...
TS ikinci sayfada bir çözüm buldu https://www.mql5.com/en/forum/64408/page2#comment_1923439
ve paylaşmadı
TS ikinci sayfada bir çözüm buldu https://www.mql5.com/en/forum/64408/page2#comment_1923439
ve paylaşmadı
eklemek isterim:
Üzgünüm elbette, ama koda her zaman şaşırırım
eklemek isterim:
test cihazında çalışmıyor...
Yalnızca bir düğmeye basıldığından, bir statik değişkenden vazgeçilebilir.
Basılan düğme hatırlanır, ardından her tikte bir karşılaştırma yapılır. Fark varsa buton hafızadan çıkarılır ve yeni değer kaydedilir.