記事"グラフィカルインターフェイスX:マルチラインテキストボックスでのテキスト選択(ビルド13)"についてのディスカッション - ページ 7 1234567891011121314...16 新しいコメント Anatoli Kazharski 2017.04.26 13:50 #61 Konstantin: メソッドX(const int x)およびY(const int y) は、フォーム内のテーブルの位置に影響を与えません。相対座標は、カスタムクラスで要素を作成する際に設定さ れます://--- コントロールの作成 if(!m_canvas_table.CreateTable(m_chart_id,m_subwin,x_gap,y_gap)) return(false);//---タスクは何ですか? Konstantin 2017.04.26 13:54 #62 Anatoli Kazharski:相対座標は、カスタムクラスで要素が作成されるときに設定さ れます://---タスクは何ですか?2つのテーブルを水平に配置するために、x_gap,y_ gapで水平スクロールの位置を変える、それだけ((.PS.だから、ずれたように見えるが、なぜか2つのテーブルがずれている ))で、メソッドの中でCWndContainer::AddToElementsArray(0, m_table_pair.GetTbl());2つのテーブルがある場合、最初のパラメータは常に0ですか、それは同じオブジェクトのシリアル番号ですか?なぜか1つ目のテーブルは2つ目のテーブルの下にしつこく移動します。 Anatoli Kazharski 2017.04.26 14:00 #63 Konstantin:...PS.それで、ずれたようだが、なぜか2つのテーブルがずれた ))メソッドの中でCWndContainer::AddToElementsArray(0, m_table_pair.GetTbl());テーブルが2つある場合、最初のパラメータは常に0ですか、それとも同じオブジェクトのシリアル番号ですか? 最初のパラメータは、アイテムがアタッチされているフォームの番号です。おそらく、1つの同じテーブルを要素の共通リストに追加しているのでしょう。 Konstantin 2017.04.26 14:02 #64 Anatoli Kazharski: 最初のパラメータは、その要素が添付されているフォームの番号です。おそらく、共通リストに同じテーブルを追加しているのでしょう。 共通リストとはどういう意味ですか?フォームクラスでの作成方法です:/*! \brief オブジェクトの作成 ¦param const string a_name - 番組名 ¦param const uint a_pause - ステータスラインの更新のための一時停止 ¦return 成功すればtrue、そうでなければfalse */. bool CMainForm::Create(const string a_name,const uint a_pause) { m_counter500.SetParameters(16, a_pause); m_counter16.SetParameters(16, 16); if(!CreateForm(m_form, a_name)) return false; if(!CreateStatusBar(m_status_bar, m_form, 1, STATUS_SIZE_HEIGHT)) return false; if(!m_table_sign.Create(m_form, m_chart_id, m_subwin, 1, 20)) return false; if(!m_table_pair.Create(m_form, m_chart_id, m_subwin, 450, 20)) return false; //--- テーブル・オブジェクトをオブジェクト・グループの共通配列に追加する。 CWndContainer::AddToElementsArray(0, m_table_sign.GetTbl()); CWndContainer::AddToElementsArray(0, m_table_pair.GetTbl()); m_chart.Redraw(); //--- return true; }GetTbl メソッドはCCanvasTable m_table へのポインタを返します 。 Anatoli Kazharski 2017.04.26 14:18 #65 Konstantin:...これがあなたの望む結果ですか?//---アーカイブに例を添付しました: ファイル: TestLibrary11_05.zip 5 kb Anatoli Kazharski 2017.04.26 14:20 #66 Konstantin:フォーム・クラスの create メソッドです:GetTbl メソッドはCCanvasTable m_table へのポインタを返します 。//--- コントロールの作成 if(!m_canvas_table2.CreateTable(m_chart_id,m_subwin,x_gap,y_gap)) return(false); //--- オブジェクト・グループの共通配列にオブジェクトを追加する。 CWndContainer::AddToElementsArray(0,m_canvas_table2); Konstantin 2017.04.26 14:30 #67 Anatoli Kazharski:こんな結果を望んでいるのか?//---アーカイブに例を添付した: 私はこのようにしました:/*! \brief オブジェクトの作成 ¦param const string a_name - 番組名 ¦param const uint a_pause - ステータスラインの更新を一時停止 ¦return 成功すればtrue、そうでなければfalse */. bool CMainForm::Create(const string a_name,const uint a_pause) { m_counter500.SetParameters(16, a_pause); m_counter16.SetParameters(16, 16); if(!CreateForm(m_form, a_name)) return false; if(!CreateStatusBar(m_status_bar, m_form, 1, STATUS_SIZE_HEIGHT)) return false; if(!m_table_sign.Create(m_form, m_chart_id, m_subwin, 1, 20)) return false; //--- テーブル・オブジェクトをオブジェクト・グループの共通配列に追加する。 CWndContainer::AddToElementsArray(0, m_table_sign.GetTbl()); if(!m_table_pair.Create(m_form, m_chart_id, m_subwin, 450, 20)) return false; //--- テーブル・オブジェクトをオブジェクト・グループの共通配列に追加する。 CWndContainer::AddToElementsArray(0, m_table_pair.GetTbl()); m_chart.Redraw(); //--- return true; }オブジェクトを作成した後、すぐにコンテナに入れ、それから別のオブジェクトを作成する必要があることがわかりました )) Konstantin 2017.04.26 14:32 #68 Anatoli Kazharski: メイン・フォーム・クラス、テーブル・クラス1、テーブル・クラス2......といった具合に機能を管理するのに便利なのだ。 Anatoli Kazharski 2017.04.26 14:38 #69 Konstantin: いや、私はテーブルを他のクラスにもっているんだ。モジュラー・プログラミングを使っているんだ)だから、メイン・フォーム・クラス、テーブル・クラス1、テーブル・クラス2といった機能を管理する方が便利なんだ。 同感です。このライブラリの多くのユーザーはこのようにしている。) Konstantin 2017.04.26 14:55 #70 Anatoli Kazharski: 私もそう思う。このライブラリーの多くのユーザーはそうしているけど、僕はどうしても手が出せないんだ。) ところで、問題があります:CWndEvents::CWndEvents(void) : m_chart_id(0), m_subwin(0), m_active_window_index(0), m_indicator_shortname(""), m_program_name(PROGRAM_NAME), m_subwindow_handle(INVALID_HANDLE), m_subwindow_shortname(""), m_subwindows_total(1) { //--- タイマーをスタートさせる。 if(!::MQLInfoInteger(MQL_TESTER)) ::EventSetMillisecondTimer(TIMER_STEP_MSC); //--- 現在のチャートのIDを取得 m_chart.Attach(); //--- マウス・イベントのトラッキングを有効にする m_chart.EventMouseMove(true); //--- SpaceキーとEnterキーのコマンドライン呼び出しを無効にする。 m_chart.SetInteger(CHART_QUICK_NAVIGATION,false); //--- サブウィンドウ番号を決定する DetermineSubwindow(); }選択された行はテスターでは動作しません。このように選択した方がよいでしょう:enum ENUM_GRAPHICS { GRAPHICS_NO = 0, // グラフィックは不要 GRAPHICS_REAL = 1, 実際の取引のための//チャート GRAPHICS_TEST = 2 // テスト用グラフィック }; /*! 実行中のプログラムの表示を取得 */ ENUM_GRAPHICS CCheck::GetGraphics(void) { return m_graphics; } //-----------------------------------------------------------------------------+ /* グラフィックス表示の符号 ENUM_GRAPHICS列挙からのプログラム操作の符号 */を返します。 ENUM_GRAPHICS CCheck::CheckGraphicsDisplay(void) { if(MQLInfoInteger(MQL_OPTIMIZATION) || (MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_VISUAL_MODE))) m_graphics = GRAPHICS_NO; else if(!MQLInfoInteger(MQL_OPTIMIZATION) && !MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_VISUAL_MODE)) m_graphics = GRAPHICS_REAL; else if(MQLInfoInteger(MQL_VISUAL_MODE)) m_graphics = GRAPHICS_TEST; //--- return m_graphics; }プログラムではこのように選択します: //--- OnTimer()の設定 uint _pause = 0; if(in_param.graphics == GRAPHICS_REAL) _pause = 500; // 500 ms else if(in_param.graphics == GRAPHICS_TEST) _pause = 60000; // 1分 if(!main_form.Create(name_mts, _pause)) { ::Print(__FUNCTION__," > GUIの作成に失敗しました!"); return INIT_FAILED; }または、フラグを使って選択する 1234567891011121314...16 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
メソッドX(const int x)およびY(const int y) は、フォーム内のテーブルの位置に影響を与えません。
相対座標は、カスタムクラスで要素を作成する際に設定さ れます:
//---
タスクは何ですか?
相対座標は、カスタムクラスで要素が作成されるときに設定さ れます:
//---
タスクは何ですか?
2つのテーブルを水平に配置するために、x_gap,y_ gapで水平スクロールの位置を変える、それだけ((.
PS.だから、ずれたように見えるが、なぜか2つのテーブルがずれている ))
で、メソッドの中で
CWndContainer::AddToElementsArray(0, m_table_pair.GetTbl());2つのテーブルがある場合、最初のパラメータは常に0ですか、それは同じオブジェクトのシリアル番号ですか?
なぜか1つ目のテーブルは2つ目のテーブルの下にしつこく移動します。
...
PS.それで、ずれたようだが、なぜか2つのテーブルがずれた ))
メソッドの中で
CWndContainer::AddToElementsArray(0, m_table_pair.GetTbl());テーブルが2つある場合、最初のパラメータは常に0ですか、それとも同じオブジェクトのシリアル番号ですか?
最初のパラメータは、その要素が添付されているフォームの番号です。おそらく、共通リストに同じテーブルを追加しているのでしょう。
共通リストとはどういう意味ですか?
フォームクラスでの作成方法です:
GetTbl メソッドはCCanvasTable m_table へのポインタを返します 。
...
これがあなたの望む結果ですか?
//---
アーカイブに例を添付しました:
フォーム・クラスの create メソッドです:
GetTbl メソッドはCCanvasTable m_table へのポインタを返します 。
こんな結果を望んでいるのか?
//---
アーカイブに例を添付した:
私はこのようにしました:
オブジェクトを作成した後、すぐにコンテナに入れ、それから別のオブジェクトを作成する必要があることがわかりました ))
メイン・フォーム・クラス、テーブル・クラス1、テーブル・クラス2......といった具合に機能を管理するのに便利なのだ。
いや、私はテーブルを他のクラスにもっているんだ。モジュラー・プログラミングを使っているんだ)だから、メイン・フォーム・クラス、テーブル・クラス1、テーブル・クラス2といった機能を管理する方が便利なんだ。
私もそう思う。このライブラリーの多くのユーザーはそうしているけど、僕はどうしても手が出せないんだ。)
ところで、問題があります:
選択された行はテスターでは動作しません。このように選択した方がよいでしょう:
プログラムではこのように選択します:
または、フラグを使って選択する