ボタンを使ったタスク - ページ 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:時刻はどこに書けばいいのでしょうか? 各ボタンに変数を作って、そこに時刻を格納すればいいのでしょうか?すべての問題が解決されたありがとう、私はより簡単な方法を見つけた、私自身は、座って疑問に思う...2ページ目に解決策が載っていますねhttps://www.mql5.com/ru/forum/64408/page2#comment_1923439と共有しなかった。 Задача с кнопками ! www.mql5.com Задача : При нажатии на любую из кнопок предыдущая нажатая кнопка должна отжаться. - Страница 2 - Категория: общее обсуждение Vladimir Pastushak 2015.09.23 13:43 #63 Event:TCは、https://www.mql5.com/ru/forum/64408/page2#comment_1923439 の2ページ目で解決策を見つけました。であり、共有しなかった。 どなたか、もっといい方法を教えてください。 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 ボタンが1つしか押されないので、1つのスタティック変数で 間に合います。押されたボタンを記憶しておき、1目盛りごとに比較する。差があれば、ボタンを離し、新しい値を記憶させる。 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千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そろそろテストコードを添付する時期でしょう。そうすることで、実験がしやすくなります。
以下は
解決策が見つかるといいのですが...。
時刻はどこに書けばいいのでしょうか? 各ボタンに変数を作って、そこに時刻を格納すればいいのでしょうか?
すべての問題が解決されたありがとう、私はより簡単な方法を見つけた、私自身は、座って疑問に思う...
2ページ目に解決策が載っていますねhttps://www.mql5.com/ru/forum/64408/page2#comment_1923439
と共有しなかった。
TCは、https://www.mql5.com/ru/forum/64408/page2#comment_1923439 の2ページ目で解決策を見つけました。
であり、共有しなかった。
完成させたい。
失礼ながら、いつもコードに驚かされるのですが
付け足していきたい。
テスターでは動作しませんが...。
ボタンが1つしか押されないので、1つのスタティック変数で 間に合います。
押されたボタンを記憶しておき、1目盛りごとに比較する。差があれば、ボタンを離し、新しい値を記憶させる。