記事"グラフィカルインターフェイスX:マルチラインテキストボックスでのテキスト選択(ビルド13)"についてのディスカッション - ページ 8 12345678910111213141516 新しいコメント Anatoli Kazharski 2017.04.26 15:00 #71 Konstantin:ところで、問題がある: ハイライトされたラインはテスターでは使えない。テスターでのテストはまだしていない。ですから、今のところ一時的にです。テスターでGUIを テストしてみましたか?結果はどうでしたか?イベントは機能しますか?グラフィカル・オブジェクトはすべて表示されていますか? Konstantin 2017.04.26 15:16 #72 Anatoli Kazharski:テスターでのテストはまだしていないんだ。そのため、今は一時的にこのような状態になっています。テスターでGUIをテストしてみましたか?結果はどうですか?イベントは動作しますか?すべてのグラフィカル・オブジェクトが表示されていますか? はい、すべてのオブジェクトが表示されます。テスターではチャートのマウスイベントは動作しませんが、インターフェイス全体は生きています。一般的には、ライブラリを編集しないために、内蔵タイマーをあきらめることになるでしょう。) Konstantin 2017.04.30 09:52 #73 つまり、X上でチャートのサイズを変更しても、フォームはサイズを変更せずに右/左に移動してしまいます。CWndEventsクラスの ChartEventChartChangeメソッドをオーバーライドするオプションとして、このメソッドはprivateセクションにあります:void ChartEventCustom(void); void ChartEventClick(void); void ChartEventMouseMove(void); void ChartEventObjectClick(void); void ChartEventEndEdit(void); void ChartEventChartChange(void);メソッドをprotectedセクションに移動させるのは理にかなっていると思いますが、やはりprivateセクションのメソッドもそこで使われているのでしょうか?一般的に、もしこのような問題に遭遇された方がいらっしゃいましたら、解決策をご提案ください。 Anatoli Kazharski 2017.04.30 10:31 #74 Konstantin:つまり、X上でチャートのサイズを変更しても、フォームはサイズを変更せずに右/左に移動してしまいます。CWndEventsクラスの ChartEventChartChangeメソッドをオーバーライドするオプションとして、このメソッドはprivateセクションにあります:メソッドをprotectedセクションに移動させるのは理にかなっていると思いますが、やはりprivateセクションのメソッドもそこで使われているのでしょうか?一般的に、もしこのような問題に遭遇された方がいらっしゃいましたら、解決策をご提案ください。だいたいこんな感じ://+------------------------------------------------------------------+ //|| コントロール用のフォームを作成する。 //+------------------------------------------------------------------+ bool CProgram::CreateWindow(const string caption_text) { //--- ウィンドウ配列にウィンドウ・ポインタを追加する。 CWndContainer::AddWindow(m_window); //--- 寸法 int x_size =200; int y_size =200; //--- 座標 int x =m_chart.WidthInPixels()-(x_size+1); int y =1; //--- プロパティ ... //--- フォームの作成 if(!m_window.CreateWindow(m_chart_id,m_subwin,caption_text,x,y)) return(false); //--- return(true); }//---MQLアプリケーション・ユーザー・クラスのイベント・ハンドラで、CHARTEVENT_CHART_CHANGE イベントを処理するとき://+------------------------------------------------------------------+ //| イベントハンドラ| //+------------------------------------------------------------------+ void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) { m_window.X(m_chart.WidthInPixels()-(m_window.XSize()+1)); } }//---結果//---CHARTEVENT_CHART_CHANGE イベントはさまざまなケースで生成されるため、チャート・ウィンドウのサイズ(幅)が変更されたかどうかのチェックも追加できます。例えば、チャートをスクロールする場合です。 Konstantin 2017.04.30 13:14 #75 Anatoli Kazharski:こんな感じだ://---カスタムMQLアプリケーション・クラスのイベント・ハンドラで、CHARTEVENT_CHART_CHANGE イベントを処理するとき://---結果を返します://---CHARTEVENT_CHART_CHANGE イベントはさまざまなケースで生成されるため、チャート・ウィンドウのサイズ(幅)が変更されたかどうかのチェックも追加できます。例えば、チャートをスクロールする場合などです。 おっと、うまくいった )) Konstantin 2017.05.02 04:06 #76 テーブル作成 時にSelectableRow(false) が設定されている場合、マウスの左ボタンがクリックされた行のインデックスをテーブルで取得するにはどうすればよいですか?OnEventで sparam パラメータを解析するのはエレガントには見えません。もちろん、SelectableRow(true)を 使用してSelectedItem()を 使用することは可能ですが、このタスクはテーブル内の行を選択することなく行われます。 Anatoli Kazharski 2017.05.02 11:42 #77 Konstantin:テーブル作成時にSelectableRow(false) が設定されている場合、マウスの左ボタンがクリックされた行のインデックスをテーブルで取得するにはどうすればよいですか?OnEventで sparam パラメータを解析するのは、エレガントには見えません。もちろん、SelectableRow(true)を使って、SelectedItem()を 使うこともできるが、テーブルの行を選択する必要がない。 今のところ、このような機能しかありませんが、この機能を追加するつもりです。 Konstantin 2017.05.02 13:36 #78 テーブルの行を選択したときのイベントと、コンボボックスの項目を選択したときのイベントを区別するにはどうすればよいですか? コードから、同じON_CLICK_LIST_ITEM イベントを使用していることがわかります。 Anatoli Kazharski 2017.05.02 13:44 #79 Konstantin: テーブルの行を選択したときのイベントと、コンボボックスの項目を選択したときのイベントを区別するにはどうすればよいでしょうか? コードから、両者が同じON_CLICK_LIST_ITEM イベントを使用していることは明らかです。 なぜですか?一体何がこれを妨げているのでしょうか? Konstantin 2017.05.02 14:12 #80 フォームにテーブルを表示し、その中の行を選択し、コンボボックスで値を選択し、テーブルの行のデータとコンボボックスの値を別々のエンティティに書き込む必要があります。今、イベントは区切られておらず、タスクを実現する松葉杖を作る必要があります:もしかしたら、他のメカニズムを提案できるかもしれない。基本的に、テーブルはティッカーペアの配列であり、コンボボックスはシグナルのタイプを含み、別のエンティティはシグナルの配列のオブジェクトである。オブジェクト自体は単一のフィールドではなく、複雑なカスタムデータ型であり、テーブルのティッカーペアとシグナルタイプが記録され、別の処理が行われる。 12345678910111213141516 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ところで、問題がある:
ハイライトされたラインはテスターでは使えない。テスターでのテストはまだしていない。ですから、今のところ一時的にです。
テスターでGUIを テストしてみましたか?結果はどうでしたか?イベントは機能しますか?グラフィカル・オブジェクトはすべて表示されていますか?
テスターでのテストはまだしていないんだ。そのため、今は一時的にこのような状態になっています。
テスターでGUIをテストしてみましたか?結果はどうですか?イベントは動作しますか?すべてのグラフィカル・オブジェクトが表示されていますか?
はい、すべてのオブジェクトが表示されます。テスターではチャートのマウスイベントは動作しませんが、インターフェイス全体は生きています。
一般的には、ライブラリを編集しないために、内蔵タイマーをあきらめることになるでしょう。)
つまり、X上でチャートのサイズを変更しても、フォームはサイズを変更せずに右/左に移動してしまいます。
CWndEventsクラスの ChartEventChartChangeメソッドをオーバーライドするオプションとして、このメソッドはprivateセクションにあります:
メソッドをprotectedセクションに移動させるのは理にかなっていると思いますが、やはりprivateセクションのメソッドもそこで使われているのでしょうか?一般的に、もしこのような問題に遭遇された方がいらっしゃいましたら、解決策をご提案ください。
つまり、X上でチャートのサイズを変更しても、フォームはサイズを変更せずに右/左に移動してしまいます。
CWndEventsクラスの ChartEventChartChangeメソッドをオーバーライドするオプションとして、このメソッドはprivateセクションにあります:
メソッドをprotectedセクションに移動させるのは理にかなっていると思いますが、やはりprivateセクションのメソッドもそこで使われているのでしょうか?一般的に、もしこのような問題に遭遇された方がいらっしゃいましたら、解決策をご提案ください。
だいたいこんな感じ:
//---
MQLアプリケーション・ユーザー・クラスのイベント・ハンドラで、CHARTEVENT_CHART_CHANGE イベントを処理するとき:
//---
結果
//---
CHARTEVENT_CHART_CHANGE イベントはさまざまなケースで生成されるため、チャート・ウィンドウのサイズ(幅)が変更されたかどうかのチェックも追加できます。例えば、チャートをスクロールする場合です。
こんな感じだ:
//---
カスタムMQLアプリケーション・クラスのイベント・ハンドラで、CHARTEVENT_CHART_CHANGE イベントを処理するとき:
//---
結果を返します:
//---
CHARTEVENT_CHART_CHANGE イベントはさまざまなケースで生成されるため、チャート・ウィンドウのサイズ(幅)が変更されたかどうかのチェックも追加できます。例えば、チャートをスクロールする場合などです。
おっと、うまくいった ))
テーブル作成 時にSelectableRow(false) が設定されている場合、マウスの左ボタンがクリックされた行のインデックスをテーブルで取得するにはどうすればよいですか?OnEventで sparam パラメータを解析するのはエレガントには見えません。もちろん、SelectableRow(true)を 使用してSelectedItem()を 使用することは可能ですが、このタスクはテーブル内の行を選択することなく行われます。
テーブル作成時にSelectableRow(false) が設定されている場合、マウスの左ボタンがクリックされた行のインデックスをテーブルで取得するにはどうすればよいですか?OnEventで sparam パラメータを解析するのは、エレガントには見えません。もちろん、SelectableRow(true)を使って、SelectedItem()を 使うこともできるが、テーブルの行を選択する必要がない。
テーブルの行を選択したときのイベントと、コンボボックスの項目を選択したときのイベントを区別するにはどうすればよいでしょうか? コードから、両者が同じON_CLICK_LIST_ITEM イベントを使用していることは明らかです。
フォームにテーブルを表示し、その中の行を選択し、コンボボックスで値を選択し、テーブルの行のデータとコンボボックスの値を別々のエンティティに書き込む必要があります。今、イベントは区切られておらず、タスクを実現する松葉杖を作る必要があります:
もしかしたら、他のメカニズムを提案できるかもしれない。
基本的に、テーブルはティッカーペアの配列であり、コンボボックスはシグナルのタイプを含み、別のエンティティはシグナルの配列のオブジェクトである。オブジェクト自体は単一のフィールドではなく、複雑なカスタムデータ型であり、テーブルのティッカーペアとシグナルタイプが記録され、別の処理が行われる。