GLUCK?! マウスクリックのイベントハンドリング!!! - ページ 4

 
on_Clickの代わりにon_MouseDownを使用する。
 
FAQ:
on_Clickの代わりにon_MouseDownを使用します。
ありがとうございました。
 

THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU かなり早い方法で問題が解決されました。

この言葉はもっと好きだ!!!!

 
Vladon:

THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU かなり早い方法で問題が解決されました。

この言葉がもっと好きになりました!!!!

エンライトン

ZS.想定される事象をざっと見て、すぐにいくつかの感想を持ちました。興味深い確認事項があります。

 

私も小型のパネルを持っています。

オブジェクトをクリックすることで動作し、さらに「チャイルドプルーフ」としてCTRLキーを押す必要があります。

一度押されると、ボタンは偽に設定されます。

if(id==CHARTEVENT_OBJECT_CLICK && key==true)
     {
      if(sparam=="buy")  {Print("Нажата BUY");OpenBuy();} 
      if(sparam=="sell")  { Print("Нажата SELL");OpenSell(); }  
      if(sparam=="wl")  { Print("Нажата WL");ModifyWl();}
      if(sparam=="sellstop")  { Print("Нажата SELL STOP");SellStop();}  
      if(sparam=="buystop")  { Print("Нажата BUY STOP");BuyStop();}
      if(sparam=="delpend")  { Print("Нажата DELETE");DelPend();}
     
      ChartRedraw();
     }
  if(id==CHARTEVENT_KEYDOWN)
     {
       if(lparam==KEY_CTRL) {key=true;} else {key=false;}
     }
 // востановим кнопки
 graf_button("buy",270,5,clrBlue,"BUY",12,3,false);
 graf_button("sell",210,5,clrCrimson,"SELL",12,3,false);
 graf_button("wl",150,5,clrBlack,"WL",12,3,false);
 
 graf_button("buystop",270,30,clrDarkBlue,"B.STOP",12,3,false);
 graf_button("sellstop",150,30,clrCrimson,"S.STOP",12,3,false);
 graf_button("delpend",210,30,clrBlack,"DEL",12,3,false);
 
Karlson:

私も小型のパネルを持っています。

オブジェクトをクリックすることで動作し、さらに「チャイルドプルーフ」としてCTRLキーを押す必要があります。

一度押されると、ボタンは偽に設定されます。

なるほど、私もそうやって始めたんだ。http://codebase.mql4.com/ru/6091

をクリックすると、次のようになります。https://www.mql5.com/ru/code/223/

をクリックすると、次のようになります。https://www.mql5.com/ru/market/product/332

ZS、いや、これは広告ではないので、投げないでください。ただ、それに気を良くして、2つのリンクから文字通り一夜にして3つになったのです。面白い意見ですね。

欲張りだからというわけではありません。子供が小さいのでお金が必要ですが、要求は大きいです。誰が言うんだ。みんなそういう立場 なんです。

よくある質問

エンライトン

ZS. 可能性のある展開をざっと見て、すぐにいくつかの感想を持ちました。興味深い確認事項があります。

アドオンライブラリは嫌いなので使っていません!!!!正直なところ、私は完全なコードを得るために書いたのではなく、いつものように、ただ蹴りを入れただけなのです :-)

いつものように使った

CHARTEVENT_MOUSE_MOVE

そして、左ボタンが押された状態を持ち、3パラメータでは、ボタンが押されると、1が出力されます。

この座標の位置を決定し、このボタンのリリース-1クラスの座標と比較する。

ただ、MKL5の言語がそれほど高度なものだとは思っていなかったんです。

 

今、パネルをドラッグする作業をしていますが、ドラッグは他のパネルと違って、ボタンを押すと、目にも止まらない小さな四角が現れ、それをドラッグしてボタンを離すと、すべてが再描画されるのです。

カーソルがスクイーズされるまでパネル全体が後ろにドラッグされるようにしたのですが、ボタンをクリックしたときにドラッグされなくするには一体どうしたらいいのでしょうか?:-)

というところでしょうか : 。

うん......簡単だよ :-)

また、2つのスナッパーを同時に扱うことができないことも問題です。

 
Vladon:

今、パネルをドラッグする作業をしていますが、ドラッグは他のパネルと違って、ボタンを押してから、目にも止まらない小さな四角をドラッグして、ボタンを離すと、すべてが再描画されます。


が、問題は2つのソバイトを同時に扱えないことです。

標準ライブラリの 方が使いやすいかも?例として、MQのControls.mq5を見てみましょう。
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

Vladon:

カーソルを離すまでパネル全体を後ろにドラッグさせるようにしたのですが、ボタンを押すとまたドラッグが止まるようにするには一体どうしたらいいのでしょうか?:-)

どのボタンのことでしょうか?
 
sergeev:
どのボタンのことでしょうか?

マウスの左ボタンを指していました。

ユーリッチ
もしかしたら、Standard Libraryを 使う方が簡単かも?例として、MQのControls.mq5を見てみましょう。

みんなそう言うけど、どうしてプログラマーの私が標準ライブラリを使わなければならないの?:-)

例えば、チャートをドラッグするときに誤って左クリックをしてしまうバグは、ライブラリが1000行のコードを含んでいるのに対し、私は2行の標準関数で解決しました。

私は議論しているわけではありません。標準的なライブラリは、使用した方が得策かもしれません。しかし、私は簡単にアクセスできる方法を好み、インクルード追加ライブラリに悩まされることはありません。