記事"グラフィカルインタフェースX: Easy And Fast (簡単で手早い)ライブラリの更新(ビルド2)"についてのディスカッション - ページ 3 12345 新しいコメント Anatoli Kazharski 2016.08.09 11:26 #21 Alexey Oreshkin: いつアップデートが必要ですか?緊急にアップデートが必要な場合は、ご自身で以下の変更を加えてください:1.Defines.mqh ファイルに、新しい識別子を追加する:#define ON_CLICK_TAB (26) // タブを切り替える//---2.CTabsと CIconTabs クラス(Tabs.mqhと IconTabs.mqh)のShowTabElements()メソッドに、以下のリストのような行を追加する://+------------------------------------------------------------------+ //| 選択されているタブの項目のみを表示する。 //+------------------------------------------------------------------+ void CTabs::ShowTabElements(void) { //--- タブが非表示の場合は終了する if(!CElement::IsVisible()) return; //--- 選択されたタブのインデックスをチェックする CheckTabIndex(); //--- for(int i=0; i<m_tabs_total; i++) { //--- タブに添付されているアイテムの数を取得する int tab_elements_total=::ArraySize(m_tab[i].elements); //--- このタブがハイライトされている場合 if(i==m_selected_tab) { //--- タブ項目を表示する for(int j=0; j<tab_elements_total; j++) m_tab[i].elements[j].Show(); } //--- アクティブでないタブの要素を隠す else { for(int j=0; j<tab_elements_total; j++) m_tab[i].elements[j].Hide(); } } //--- メッセージを送る ::EventChartCustom(m_chart_id,ON_CLICK_TAB,CElement::Id(),m_selected_tab,""); }//---3.これで、ON_CLICK_TABという 識別子を持つイベントをカスタム・クラスのハンドラで受け付けることができます。例//+------------------------------------------------------------------+ //| グラフ・イベント・ハンドラ| //+------------------------------------------------------------------+ void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { //--- タブプレス・イベント if(id==CHARTEVENT_CUSTOM+ON_CLICK_TAB) { //--- ラジオボタンを押した場合 if(m_tabs.SelectedTab()==0) { switch(m_radio_buttons1.SelectedButtonIndex()){ case 0: m_canvas_table1.Show(); m_canvas_table11.Hide(); m_canvas_table111.Hide(); ModifyCanvasTable1(0); break; case 1: m_canvas_table1.Hide(); m_canvas_table11.Show(); m_canvas_table111.Hide(); ModifyCanvasTable1(1); break; case 2: m_canvas_table1.Hide(); m_canvas_table11.Hide(); m_canvas_table111.Show(); ModifyCanvasTable1(2); break; } return; } return; } } Alexey Oreshkin 2016.08.09 17:00 #22 もう一つエラーを見つけました。ツールを起動し、パネルを離してラジオボタンを押し始めました。テーブルが描画されるとき、最初は左端から描画され、その後、必要な座標に引き寄せられます。 Anatoli Kazharski 2016.08.09 17:43 #23 Alexey Oreshkin: もう一つエラーを見つけました。ツールを起動し、パネルを離してラジオボタンを押し始めました。テーブルが描画されるとき、最初は左端から描画され、その後、必要な座標に引き寄せられます。そう、そんなものがあるのだ。このタイプのテーブルを例にして、CanvasTable.mqh ファイルのCCanvasTable::Show() メソッドに次のような行を追加します://+------------------------------------------------------------------+ //|| 要素を表示する| //+------------------------------------------------------------------+ void CCanvasTable::Show(void) { //--- アイテムがすでに表示されている場合は終了する。 if(CElement::IsVisible()) return; //--- すべてのオブジェクトを可視化する m_area.Timeframes(OBJ_ALL_PERIODS); m_canvas.Timeframes(OBJ_ALL_PERIODS); m_scrollv.Show(); m_scrollh.Show(); //--- 視認性の状態 CElement::IsVisible(true); //--- アイテムの移動 Moving(m_wnd.X(),m_wnd.Y()); }//---この問題が他のアイテムでも発生する場合は、それらのアイテムのShow() メソッドに同じ行を追加します。次回の更新では、すべての要素クラスでこの修正が行われる予定です。 Rodrigo Campos Fidelis 2016.09.02 06:46 #24 フォーム内のタブやコントロールにフォーカスを当てるような機能を開発されましたか? CEditやCSpinEditに 入力を挿入し、Enterキーを押したりTABキーを押したりした後、次のEditに移るようにしたいのですが。助けていただけますか? コミュニティへの貢献に感謝します。 Anatoli Kazharski 2016.09.02 10:31 #25 RODRIGO CAMPOS FIDELIS: CEditやCSpinEditに入力を挿入し、Enterキーを押したり、TABキーを押したりした後、エディションを変更したいのですが、プログラムの使い勝手を良くするために、次のエディットにパスしたいのです。 今のところ、これは不可能です。実装方法を考えてみます。 Rodrigo Campos Fidelis 2016.09.04 17:51 #26 Anatoli Kazharski: 現時点では不可能だ。どう実装するか考えてみるよ。Anatoli Kazharski、 それについては考えています。 ReadOnly でない ときにCEditをダブルクリックすると青くなって選択される のと同じように 。 あるいは、コードを実行したときに、スプラッシュやメッセージボックス、自動で要求されるウィンドウで入力を求められるようにする方法はないかな。 いくつか可能性を考えているんだけど、DLLは使いたくないんだ。まだそんなにプロじゃないし。しかし、私は本当に意志を持っています。もしあなたが私にいくつかの指示やアイデアを持っているなら、私は本当に私たちのコードを改善することができます。 anddm 2016.09.07 00:33 #27 親愛なるアナトーリ、ご苦労様でした!ただ、MenuItem.mqhの237行目にタイプミスがあり、うまくコンパイルできないことを指摘しておきます:" > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method");の代わりに" > The type of the menu item can be set using the CMenuItem::TypeMenuItem() method");と読むべきです。 haily27 2018.06.06 04:28 #28 MT4の最終バージョンですか? greentreen 2018.08.20 19:18 #29 編集がいつもちらついている。 https://www.mql5.com/en/forum/274301 Mano 2019.12.11 13:29 #30 ラベルのみの作成方法 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いつアップデートが必要ですか?
緊急にアップデートが必要な場合は、ご自身で以下の変更を加えてください:
1.Defines.mqh ファイルに、新しい識別子を追加する:
//---
2.CTabsと CIconTabs クラス(Tabs.mqhと IconTabs.mqh)のShowTabElements()メソッドに、以下のリストのような行を追加する:
//---
3.これで、ON_CLICK_TABという 識別子を持つイベントをカスタム・クラスのハンドラで受け付けることができます。
例
もう一つエラーを見つけました。ツールを起動し、パネルを離してラジオボタンを押し始めました。テーブルが描画されるとき、最初は左端から描画され、その後、必要な座標に引き寄せられます。
そう、そんなものがあるのだ。このタイプのテーブルを例にして、CanvasTable.mqh ファイルのCCanvasTable::Show() メソッドに次のような行を追加します:
//---
この問題が他のアイテムでも発生する場合は、それらのアイテムのShow() メソッドに同じ行を追加します。次回の更新では、すべての要素クラスでこの修正が行われる予定です。
CEditやCSpinEditに 入力を挿入し、Enterキーを押したりTABキーを押したりした後、次のEditに移るようにしたいのですが。
コミュニティへの貢献に感謝します。
CEditやCSpinEditに入力を挿入し、Enterキーを押したり、TABキーを押したりした後、エディションを変更したいのですが、プログラムの使い勝手を良くするために、次のエディットにパスしたいのです。
現時点では不可能だ。どう実装するか考えてみるよ。
あるいは、コードを実行したときに、スプラッシュやメッセージボックス、自動で要求されるウィンドウで入力を求められるようにする方法はないかな。
いくつか可能性を考えているんだけど、DLLは使いたくないんだ。まだそんなにプロじゃないし。しかし、私は本当に意志を持っています。もしあなたが私にいくつかの指示やアイデアを持っているなら、私は本当に私たちのコードを改善することができます。
親愛なるアナトーリ、ご苦労様でした!
ただ、MenuItem.mqhの237行目にタイプミスがあり、うまくコンパイルできないことを指摘しておきます:
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method");の代わりに
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem() method");と読むべきです。
編集がいつもちらついている。
https://www.mql5.com/en/forum/274301