キャンバスがカッコいい! - ページ 73 1...666768697071727374757677787980...93 新しいコメント Maxim Kuznetsov 2022.05.20 16:43 #721 Vitaliy Kuznetsov #:どなたか、エディットボックスをキャンバスに表示するためのコードがあれば教えてください。私はラバーパネルを作っていて、そのような要素が必要なのです。それをクリックすると、数字を入力したり削除したりする必要があり、点滅するカーソルが表示されます。もしなければ、クリックしたときに通常の置換をします。 MetaTraderは通常のボタン(Enter/Tab)やKeyPress/Repeate/Releaseを "ドラッグ/処理 "する。 それは、DLLを取り、Windowsのコントロールウィンドウ、またはNotepad.exeを埋め込む方が簡単です。 数日間、情報不足に悩まされましたが(低レベルのものは今時見つけるのが難しい、数が少ない)、最終的にはコードは2桁少なくなり、より良く動作するようになります。 Anatoli Kazharski 2022.05.20 17:28 #722 Vitaliy Kuznetsov #:どなたか、エディットボックスをキャンバスに表示するコードがあれば教えてください。...EasyAndFastGUI - グラフィカルインターフェイスを作成するためのライブラリ >>... TextBox.mqh ファイルを参照 EasyAndFastGUI - библиотека для создания графических интерфейсов www.mql5.com Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ. Vitaliy Kuznetsov 2022.05.20 17:32 #723 ありがとう、いろいろ試してみるよ。 Maxim Kuznetsov 2022.05.22 10:48 #724 Maxim Kuznetsov #:MetaTraderは通常のボタン(Enter/Tab)やKeyPress/Repeate/Releaseを "ドラッグ/処理 "する。DLLを使ってWindowsのコントロールウィンドウやNotepad.exeを埋め込む方が簡単です。数日間、情報不足に悩まされましたが(低レベルのものは今時見つけるのが難しい、数が少ない)、最終的にはコードは2桁少なくなり、より良く動作するようになります。 ところで、「zambed」とさまざまな実験の記憶について:ウィンドウは埋め込まれているが、再描画と入力に問題がある。ただ使えないだけで、"動く可能性があるという事実 "で止まっている。 必要なメッセージがすべて送信され、レンダリングが正しく処理されるように、何らかの方法でウィンドウズを説明する必要がある。別のトラックにすべてを持つコントロール(winという点では、結局はウィンドウだ)がある場合、典型的なGUIデザインとは言えない。 もちろん、私はここで行き詰まりを感じている。Linuxのプラクティスは好ましくない。Expertプロセス(OSの用語では、それはGUIトレッドではないようだ、そして、その一部がそれに飛ばないだけである)にいくつかの(何? このような問題が解決されれば、DLLを恐れない人には明るい展望が開ける: - Gtk/Qt/Lazarusとそのデザイナーと本当に良いグラフィックを使って、"チャートの中のダイアログ "を使うことができるようになります。 - 独自の「タブ」を作ることが可能になる - MDIの内部で、「チャートの中にウィンドウを描く」から「MTの中にタブを作る」までの半歩。あらゆる種類のボード/板が、新しいチャートを開く必要がなくなる。 そう、ハックレベルで :-) Ilyas 2022.05.23 09:41 #725 Vitaliy Kuznetsov #:どなたか、エディットボックスをキャンバスに表示するためのコードがあれば教えてください。私はラバーパネルを作っていて、そのような要素が必要なのです。それをクリックすると、数字を入力したり削除したりする必要があり、点滅するカーソルが表示されます。もしなければ、クリックしたときに通常の置換をします。 このようなEditCtrlのサンプルコード(base) //+------------------------------------------------------------------+ //| EditCtrl.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include <Canvas/Canvas.mqh> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CControl : protected CCanvas { public: bool Create(int x,int y,int w,int h) { if(!CCanvas::CreateBitmapLabel("TEST_EDIT",x,y,w,h,COLOR_FORMAT_ARGB_NORMALIZE)) return(false); if(!OnCreate()) return(false); Update(); return(true); } void TimerSet(uint msec) { if(msec) EventSetMillisecondTimer(msec); else EventKillTimer(); } void Update(void) { OnDraw(this); CCanvas::Update(); } virtual bool OnCreate(void) { return(true); } virtual void OnKeyDown(int key,uint flags) { } virtual void OnTimer(void) { } virtual void OnDraw(CCanvas &canvas) { } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CEditCtrl : public CControl { protected: string m_text; uint m_cursor_pos; bool m_cursor_visible; public: virtual bool OnCreate(void) { m_cursor_pos =0; m_cursor_visible=true; m_text =""; TimerSet(500); return(true); } virtual void OnKeyDown(int key,uint flags) { short code; switch(key) { case 35: // END if(m_cursor_pos==m_text.Length()) return; m_cursor_pos=m_text.Length(); break; case 36: // HOME if(m_cursor_pos==0) return; m_cursor_pos=0; break; case 37: // LEFT if(m_cursor_pos==0) return; m_cursor_pos--; break; case 39: // RIGHT if(m_cursor_pos>=m_text.Length()) return; m_cursor_pos++; break; default: if((code=TranslateKey(key))==-1) return; if(code<32) { if(code==8 && m_cursor_pos) { m_text=m_text.Substr(0,m_cursor_pos-1) + m_text.Substr(m_cursor_pos,-1); if(--m_cursor_pos>m_text.Length()) m_cursor_pos=m_text.Length(); break; } return; } if(m_cursor_pos!=m_text.Length()) m_text = m_text.Substr(0,m_cursor_pos) + "\xFFFF" + m_text.Substr(m_cursor_pos,m_text.Length()); m_text.SetChar(m_cursor_pos,code); m_cursor_pos++; break; } Update(); } virtual void OnTimer(void) { m_cursor_visible=!m_cursor_visible; Update(); } virtual void OnDraw(CCanvas &canvas) { CCanvas::Erase(ARGB(255,255,255,255)); if(m_text.Length()) canvas.TextOut(0,0,m_text,ARGB(255,0,0,0)); if(m_cursor_visible) { int x=0,y; if(m_cursor_pos) canvas.TextSize(m_text.Substr(0,m_cursor_pos),x,y); canvas.FillRectangle(x,0,x,canvas.Height(),ARGB(255,0,0,0)); } } }; CEditCtrl ExtEditCtrl; CControl *ExtInputFocus=&ExtEditCtrl; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit(void) { ExtEditCtrl.Create(100,100,200,20); ChartSetInteger(0,CHART_QUICK_NAVIGATION,false); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer(void) { ExtInputFocus.OnTimer(); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_KEYDOWN) ExtInputFocus.OnKeyDown((int)lparam,(uint)sparam); } //+------------------------------------------------------------------+ Vitaliy Kuznetsov 2022.05.23 11:14 #726 Ilyas #:EditCtrl (ベース)のサンプルコード ありがとうございます。後ほどMT5で試してみます。 Nikolai Semko 2022.05.23 11:54 #727 Ilyas #:EditCtrl (base) のサンプルコード イリヤス、質の高いコードの良いチュートリアル例をありがとう。 Aleksei Beliakov 2022.05.23 13:39 #728 Ilyas #:EditCtrl (base) のサンプルコード オブジェクトが削除されないようにバックスペースを無効にする方法はありますか? Ilyas 2022.05.23 15:00 #729 Aleksei Beliakov #:オブジェクトが削除されないようにバックスペースを無効にする方法はありますか? int OnInit() { ChartSetInteger(0,CHART_EVENT_OBJECT_CREATE,true); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_OBJECT_CREATE) { ObjectSetInteger(0,sparam,OBJPROP_HIDDEN,true); ChartRedraw(); Print(sparam); } } Aleksei Beliakov 2022.05.24 00:45 #730 Ilyas #: このプロパティを設定しても、オブジェクトはバックスペースで削除されてしまいますが、選択されているからでしょうか?オブジェクトの作成時間が短い場合、オブジェクトを他のオブジェクトの上に置く方法はありますか?例えば、私がビットマップラベルオブジェクトを作成した後、他のオブジェクトを作成すると、ビットマップラベルはその後に作成されたオブジェクトの下にあります。質問 ビットマップラベルを、削除して再度作成する以外に、その後に作成されたオブジェクトの上に置く方法はありますか? 1...666768697071727374757677787980...93 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どなたか、エディットボックスをキャンバスに表示するためのコードがあれば教えてください。
私はラバーパネルを作っていて、そのような要素が必要なのです。それをクリックすると、数字を入力したり削除したりする必要があり、点滅するカーソルが表示されます。
もしなければ、クリックしたときに通常の置換をします。
MetaTraderは通常のボタン(Enter/Tab)やKeyPress/Repeate/Releaseを "ドラッグ/処理 "する。
それは、DLLを取り、Windowsのコントロールウィンドウ、またはNotepad.exeを埋め込む方が簡単です。
数日間、情報不足に悩まされましたが(低レベルのものは今時見つけるのが難しい、数が少ない)、最終的にはコードは2桁少なくなり、より良く動作するようになります。
どなたか、エディットボックスをキャンバスに表示するコードがあれば教えてください。
...
TextBox.mqh ファイルを参照
MetaTraderは通常のボタン(Enter/Tab)やKeyPress/Repeate/Releaseを "ドラッグ/処理 "する。
DLLを使ってWindowsのコントロールウィンドウやNotepad.exeを埋め込む方が簡単です。
数日間、情報不足に悩まされましたが(低レベルのものは今時見つけるのが難しい、数が少ない)、最終的にはコードは2桁少なくなり、より良く動作するようになります。
ところで、「zambed」とさまざまな実験の記憶について:ウィンドウは埋め込まれているが、再描画と入力に問題がある。ただ使えないだけで、"動く可能性があるという事実 "で止まっている。
必要なメッセージがすべて送信され、レンダリングが正しく処理されるように、何らかの方法でウィンドウズを説明する必要がある。別のトラックにすべてを持つコントロール(winという点では、結局はウィンドウだ)がある場合、典型的なGUIデザインとは言えない。
もちろん、私はここで行き詰まりを感じている。Linuxのプラクティスは好ましくない。Expertプロセス(OSの用語では、それはGUIトレッドではないようだ、そして、その一部がそれに飛ばないだけである)にいくつかの(何?
このような問題が解決されれば、DLLを恐れない人には明るい展望が開ける:
- Gtk/Qt/Lazarusとそのデザイナーと本当に良いグラフィックを使って、"チャートの中のダイアログ "を使うことができるようになります。
- 独自の「タブ」を作ることが可能になる - MDIの内部で、「チャートの中にウィンドウを描く」から「MTの中にタブを作る」までの半歩。あらゆる種類のボード/板が、新しいチャートを開く必要がなくなる。
そう、ハックレベルで :-)
どなたか、エディットボックスをキャンバスに表示するためのコードがあれば教えてください。
私はラバーパネルを作っていて、そのような要素が必要なのです。それをクリックすると、数字を入力したり削除したりする必要があり、点滅するカーソルが表示されます。
もしなければ、クリックしたときに通常の置換をします。
このようなEditCtrlのサンプルコード(base)
EditCtrl (ベース)のサンプルコード
ありがとうございます。後ほどMT5で試してみます。
EditCtrl (base) のサンプルコード
EditCtrl (base) のサンプルコード
オブジェクトが削除されないようにバックスペースを無効にする方法はありますか?
オブジェクトが削除されないようにバックスペースを無効にする方法はありますか?