記事"グラフィカルインターフェイスX:マルチラインテキストボックスでのテキスト選択(ビルド13)"についてのディスカッション - ページ 13 1...678910111213141516 新しいコメント Konstantin 2017.05.10 12:12 #121 Anatoli Kazharski:エレメントをバインドする方法は他にもある://---これらのプロパティと組み合わせて、問題を解決してみよう。 X(...)とY(...)のメソッドは、要素をX座標とY座標にリジッドにバインドし、メイン・フォーム・ウィンドウのサイズ変更に関するイベントを受け取るとき、X座標とY座標の位置には一切反応しないことを理解した。 Anatoli Kazharski 2017.05.10 12:23 #122 Konstantin: X(...)とY(...)メソッドは要素をX座標とY座標にリジッドにバインドし、メインフォームウィンドウのサイズを変更するイベントを受け取るとき、X座標とY座標の位置には一切反応しないことを理解しました。既成のWindowsアプリケーションの例で、必要なものの類似を示してもらえますか?何が必要なのかよくわかりません。あるいは、それをグラフィカルに描いてください。私の理解が正しければ、element_2はフォームの下端にバインドされ、element_1はelement_2の高さにインデントされた状態で縦方向に自動リサイズされるはずです。 Konstantin 2017.05.10 13:26 #123 Anatoli Kazharski:既製のWindowsアプリケーションの例で、必要なもののアナログを示してもらえますか?何が必要なのかよくわかりません。あるいは、それをグラフィカルに描いてください。私の理解が正しければ、element_2はフォームの下端にバインドされ、element_1はelement_2の高さにインデントされた状態で縦方向に自動リサイズされるはずです。 つまり、ウィンドウのサイズが変わると、element_1 の Y サイズが変わり、element_2 もそれに追従する必要があります。今のところ、私はelement_1がスケーリングされないような工夫をしています)。この問題については、後ほど対処します。 Konstantin 2017.05.17 15:52 #124 というのも、オープン・オーダー/ポジションのアイコンは優先順位が高く、それに応じてライブラリのすべてのグラフィカル 要素の上に配置されるからです。 Anatoli Kazharski 2017.05.17 15:54 #125 Konstantin: というのも、オープン・オーダー/ポジションのアイコンは優先順位が高く、それに応じてライブラリのすべてのグラフィカル要素の上に配置されるからです。ライブラリの「コア」にグラフィカル・オブジェクトを作成する ことで実現できると思います。 このようにしてみてください: 取引、自動取引システム、取引戦略のテストに関するフォーラム 記事「GUI X: 複数行入力フィールドでのテキスト選択(ビルド13)」についての議論。 Anatoli Kazharski, 2017.05.08 21:40 カスタムアプリケーションクラスにCProgram::OnTradeEvent() メソッドを作成する必要があります。そしてメインファイルのOnTrade() 関数の中で呼び出す必要があります://+------------------------------------------------------------------+ //| トレード機能| //+------------------------------------------------------------------+ void OnTrade(void) { program.OnTradeEvent(); }//---例えば、CProgram::OnTradeEvent()メソッドの内容は以下のようになります://+------------------------------------------------------------------+ //| 取引イベント| //+------------------------------------------------------------------+ void CProgram::OnTradeEvent(void) { //--- すべてのチャートにトレードイベントを送信する。 m_events.SendEventToAllCharts(0,ON_TRADE_EVENT,0,0.0,m_program_name); //--- 最後の位置のトランザクションを設定する if(m_show_deals.CheckButtonState()) if(m_vdeals.ShowDealsLastPosition()) ResetWindow(); //--- 損切り距離の確認 if(m_trailing_stop.CheckButtonState()) m_ctrade.CheckStopLossSize(::Symbol()); //--- 貿易業務のための変数のゼロ化 m_ctrade.ZeroCalcPositionVariables(); //--- 残高配列の初期化とチャート上の系列の更新 InitBalanceArray(); m_line_chart.SeriesUpdate(0,m_balance_data,"Balance",clrCornflowerBlue); } Konstantin 2017.05.17 16:01 #126 Anatoli Kazharski: このようにやってみてください:これは見たことがあるが、ライブラリの「コア」、つまりグラフィカル・オブジェクトを作成する ときの使い方を補足する必要があると思う:bool ObjectSetInteger( long chart_id, // チャートの識別子 string name, // 名前 ENUM_OBJECT_PROPERTY_INTEGER prop_id, // プロパティ long prop_value // 値 );プロパティを追加する必要があると思います:OBJPROP_BACK Anatoli Kazharski 2017.05.17 16:05 #127 Konstantin:しかし、ライブラリの "コア"、つまりグラフィカル・オブジェクトを作成する 際には、使い方を補足する必要があると思います:プロパティを追加する必要があると思います:OBJPROP_BACKそうすれば、グラフィックスはインターフェースのグラフィカル・オブジェクトの上にあることになります。//---とりあえずResetWindow()を実行する。後でカーネルに組み込んで、自動的に更新されるようにするつもりだ。 Konstantin 2017.05.17 16:11 #128 Anatoli Kazharski:そして、グラフはインターフェイスのグラフィカル・オブジェクトの上に配置される。//---とりあえずResetWindow()を実行する。後でカーネルに組み込んで、自動的に更新されるようにするつもりだ。 そうではなく、すべてのグラフィカル・オブジェクトをフォアグラウンドに置く必要がある。) Anatoli Kazharski 2017.05.17 16:23 #129 Konstantin: 正確には、すべてのグラフィカル・オブジェクトをフォアグラウンドに優先させる必要があります。)あなたが何をどのようにしたのか知りませんが、デフォルトでは、グラフはフォアグラウンドにあります。一番最近作成されたものが一番上になります。作成後に優先順位を変更する唯一の方法は、下にあるべきものを除いて、オブジェクトを再度非表示にして表示することです。 Konstantin 2017.05.19 13:04 #130 CTabs.クラスのメソッドでは、NULL配列のチェックを追加する必要があります:void CTabs::CalculatingPatch(int &x,int &y,int &x_size,int &y_size) { if(ArraySize(m_tabs) == 0) return; if(m_position_mode==TABS_TOP) { x =m_tabs[m_selected_tab].X()+1; y =m_tabs[m_selected_tab].Y2()-1; x_size =m_tabs[m_selected_tab].XSize()-2; y_size =1; } else if(m_position_mode==TABS_BOTTOM) { x =m_tabs[m_selected_tab].X()+1; y =m_tabs[m_selected_tab].Y(); x_size =m_tabs[m_selected_tab].XSize()-2; y_size =1; } else if(m_position_mode==TABS_LEFT) { x =m_tabs[m_selected_tab].X2()-1; y =m_tabs[m_selected_tab].Y()+1; x_size =1; y_size =m_tabs[m_selected_tab].YSize()-2; } else if(m_position_mode==TABS_RIGHT) { x =m_tabs[m_selected_tab].X(); y =m_tabs[m_selected_tab].Y()+1; x_size =1; y_size =m_tabs[m_selected_tab].YSize()-2; } }このチェックがないと、タブがない場合、フォーム全体がエラーでクラッシュしてしまうからです。 1...678910111213141516 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
エレメントをバインドする方法は他にもある:
//---
これらのプロパティと組み合わせて、問題を解決してみよう。
X(...)とY(...)のメソッドは、要素をX座標とY座標にリジッドにバインドし、メイン・フォーム・ウィンドウのサイズ変更に関するイベントを受け取るとき、X座標とY座標の位置には一切反応しないことを理解した。
X(...)とY(...)メソッドは要素をX座標とY座標にリジッドにバインドし、メインフォームウィンドウのサイズを変更するイベントを受け取るとき、X座標とY座標の位置には一切反応しないことを理解しました。
既成のWindowsアプリケーションの例で、必要なものの類似を示してもらえますか?何が必要なのかよくわかりません。あるいは、それをグラフィカルに描いてください。
私の理解が正しければ、element_2はフォームの下端にバインドされ、element_1はelement_2の高さにインデントされた状態で縦方向に自動リサイズされるはずです。
既製のWindowsアプリケーションの例で、必要なもののアナログを示してもらえますか?何が必要なのかよくわかりません。あるいは、それをグラフィカルに描いてください。
私の理解が正しければ、element_2はフォームの下端にバインドされ、element_1はelement_2の高さにインデントされた状態で縦方向に自動リサイズされるはずです。
つまり、ウィンドウのサイズが変わると、element_1 の Y サイズが変わり、element_2 もそれに追従する必要があります。今のところ、私はelement_1がスケーリングされないような工夫をしています)。この問題については、後ほど対処します。
というのも、オープン・オーダー/ポジションのアイコンは優先順位が高く、それに応じてライブラリのすべてのグラフィカル要素の上に配置されるからです。ライブラリの「コア」にグラフィカル・オブジェクトを作成する ことで実現できると思います。
このようにしてみてください:
取引、自動取引システム、取引戦略のテストに関するフォーラム
記事「GUI X: 複数行入力フィールドでのテキスト選択(ビルド13)」についての議論。
Anatoli Kazharski, 2017.05.08 21:40
カスタムアプリケーションクラスにCProgram::OnTradeEvent() メソッドを作成する必要があります。
そしてメインファイルのOnTrade() 関数の中で呼び出す必要があります:
//---
例えば、CProgram::OnTradeEvent()メソッドの内容は以下のようになります:
このようにやってみてください:
これは見たことがあるが、ライブラリの「コア」、つまりグラフィカル・オブジェクトを作成する ときの使い方を補足する必要があると思う:
プロパティを追加する必要があると思います:
OBJPROP_BACK
しかし、ライブラリの "コア"、つまりグラフィカル・オブジェクトを作成する 際には、使い方を補足する必要があると思います:
プロパティを追加する必要があると思います:
OBJPROP_BACK
そうすれば、グラフィックスはインターフェースのグラフィカル・オブジェクトの上にあることになります。
//---
とりあえずResetWindow()を実行する。後でカーネルに組み込んで、自動的に更新されるようにするつもりだ。
そして、グラフはインターフェイスのグラフィカル・オブジェクトの上に配置される。
//---
とりあえずResetWindow()を実行する。後でカーネルに組み込んで、自動的に更新されるようにするつもりだ。
そうではなく、すべてのグラフィカル・オブジェクトをフォアグラウンドに置く必要がある。)
正確には、すべてのグラフィカル・オブジェクトをフォアグラウンドに優先させる必要があります。)
あなたが何をどのようにしたのか知りませんが、デフォルトでは、グラフはフォアグラウンドにあります。一番最近作成されたものが一番上になります。作成後に優先順位を変更する唯一の方法は、下にあるべきものを除いて、オブジェクトを再度非表示にして表示することです。
CTabs.クラスのメソッドでは、NULL配列のチェックを追加する必要があります:
このチェックがないと、タブがない場合、フォーム全体がエラーでクラッシュしてしまうからです。