記事"グラフィカルインタフェースVII: タブコントロール(チャプター2)"についてのディスカッション - ページ 2 123 新しいコメント Artyom Trishkin 2016.07.11 21:50 #11 Anatoli Kazharski:もちろんだ。)このクラス(CTabs)の次のアップデートは、「複数行タブ・モード」です。ここ(複数行)のように:スーパー。テーブルとリストが今のところテーブルとリストでしかないのは残念だ。今のところ、インタラクティブな機能はなく、実質的にデータの視覚化としての役割しか果たしていない。もちろん、リストやテーブルの必要な列や行を取り出して選択し、それに対して何らかの操作を行いたい - 例えば、リストがあり、チェックボックスを付ける、あるいは一般的に必要な行を完全に選択し、選択された行の一般的なデータを別のウィンドウに表示する...。そのような何かはスーパーだろう :)しかし、これを可能にするには、このデータを操作するためのメソッドを追加する必要がある。もしかしたら、すでにあるのかもしれないが。 Anatoli Kazharski 2016.07.12 13:03 #12 Artyom Trishkin:素晴らしい。テーブルやリストが単なるテーブルやリストであるのは残念だ。今までのところ、それらは実質的にインタラクティブ性なしにデータの視覚化としてのみ機能している。...上記の大部分については、全て揃っている。リスト(CListView)で項目を選択するとイベントが発生し、どの項目が選択されたのか、現在の値が選択されたのかを判断することができる。 テーブル(CTable)でも同様です。テーブルの行を選択すると、イベントが生成され、そのパラメータには行インデックス(dparam パラメータ)が含まれ、CTable::GetValue()メソッドを使用してこの行のセルの値を取得することができます://+------------------------------------------------------------------+ //| 指定されたインデックスの値を返す。 //+------------------------------------------------------------------+ string CTable::GetValue(const int column_index,const int row_index) { //--- 列の範囲から出ないかチェックする int csize=::ArraySize(m_vcolumns); if(csize<1 || column_index<0 || column_index>=csize) return(""); //--- 行範囲の終了をチェックする int rsize=::ArraySize(m_vcolumns[column_index].m_vrows); if(rsize<1 || row_index<0 || row_index>=rsize) return(""); //--- 返り値 return(m_vcolumns[column_index].m_vrows[row_index]); }//---また、テーブルのセルを編集するモードでは、イベントが生成され、そのパラメータ(パラメータsparam)には、"column_row_text "の形式で、列番号、行番号、編集中のセルの現在の値を持つ文字列を取得することができます。アルチョム・トリシキンもちろん、リストやテーブルの必要な列や行を取り出して選択し、それに対して何らかの操作を行いたいんだ。例えば、リストがあって、チェックボックスを付けるとか、一般的に必要な行を選択して、選択した行の一般的なデータを別のウィンドウに表示するとか...。そのようなものがあれば最高です :)チェックボックスとラジオボタンを持つリストについては、後で別のクラスを作るつもりだ。 Martin Fischer 2016.08.25 14:52 #13 1.) 単純なCLabelやCEDITコントロールをフォームに追加する方法がわかりません(objects.mqhより) これらはWindowPointer()のような関数を持っていません。(objects.mqhより) これらのオブジェクトはWindowPointer()のような関数を持って いません。 これらのオブジェクトを作成することはできますが、ウィンドウにアタッチすることができません。 CWndContainer::AddToElementsArray(m_subwin, _MyEditBox); この場合、動作しません... 2.) CComboBoxは静的オブジェクトですか?の要素リストを変更することは可能ですか?ComboBoxの作成後、ComboBox-Listviewの要素のリストを変更することは可能ですか?ありがとうございます! Artyom Trishkin 2016.11.03 20:20 #14 トール、何か勝てない...。つのウィンドウがある。メインメニューから2つ目のウィンドウを開くと、アイコンの付いた4つのタブがある。それぞれのタブにはテーブルがあります。問題はこうです:最初のウィンドウを開くと、一番最近に作られたテーブルが常に表示され、ウィンドウを開く前にプログラムで必要なタブに切り替えても関係ありません。例を作ってみた。最初のウィンドウを開いたところ: メタトレーダー取引プラットフォームのスクリーンショット EURUSD, D1, 2016.11.03 MetaQuotes Software Corp.、MetaTrader 5、デモ ご覧のように、タブ1はハイライトされていますが、タブ4にバインドされているテーブルが表示されています - それはテーブル自体の列ヘッダーに書かれています。さらに、タブを切り替えると、テーブルがあるべき場所に配置されるので、マウスで2番目のタブを強調表示しました: メタトレーダー取引プラットフォームのスクリーンショット EURUSD, D1, 2016.11.03 MetaQuotes Software Corp.、メタトレーダー5、デモ 最初の画面に戻る MetaTrader取引プラットフォームのスクリーンショット EURUSD, D1, 2016.11.03 MetaQuotes Software Corp. 私は何か間違っていますか?それともバグ?トレーラーのファイルインジケータ. ファイル: ChartWindow07.mq5 6 kb Program.mqh 66 kb メタトレーダー5で標準指標に基づく相場状況評価 メタトレーダー5を始めるには トレーダーのライフハック: テストの比較レポート Anatoli Kazharski 2016.11.04 08:27 #15 Artyom Trishkin:...何か間違っているのだろうか?それともバグですか?CTabs タブでは正しく動作します。しかし、CIconTabs タブについては、ライブラリエンジンの個人配列と、ダイアログボックスを 開いたときに選択されたタブの内容を自動的に表示する 機能をまだ作っていません。これは次のアップデートで修正する予定です。しかし、一時的な解決策として、すでにカスタム・クラスでダイアログ・ボックスが開かれたことを追跡し、下のリストのようにタブを更新することができます://+------------------------------------------------------------------+//| イベントハンドラ|//+------------------------------------------------------------------+void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CUSTOM+ON_OPEN_DIALOG_BOX) { if(lparam==m_window2.Id()) m_icon_tabs.ShowTabElements(); } } Discussion of article "Graphical Resize Chart Window event 記事"グラフィカルインタフェースX:リストとテーブルの高度な管理コードの最適化(ビルド7)"についてのディスカッション Artyom Trishkin 2016.11.04 19:42 #16 Anatoli Kazharski:CTabs タイプのタブでは正しく動作します。しかし、CIconTabs タブについては、ライブラリエンジンの個人配列と、ダイアログウィンドウを開いたときに選択されたタブの内容を自動的に表示する 機能をまだ作っていません。これは次のアップデートで修正する予定です。しかし、一時的な解決策として、ダイアログボックスが開いたことをカスタムクラスで追跡し、下のリストのようにタブを更新することができます://+------------------------------------------------------------------+//| イベントハンドラ|//+------------------------------------------------------------------+void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CUSTOM+ON_OPEN_DIALOG_BOX) { if(lparam==m_window2.Id()) m_icon_tabs.ShowTabElements(); } } ありがとうございます。このように動作します。では、それぞれのタブに2つの重なり合うテーブルを入れてみます。) Kamil Wu 2019.04.03 04:04 #17 ダイアログをロールアップして期間を変更すると、MT4でダイアログが表示されません。 Francuz 2019.04.18 12:09 #18 コンパイル時に、'return' - cannot convert from const pointer to nonconst pointer SplitButton.mqh 90 65 のようなエラーが発生する。該当行のConstを削除すれば治る。 Jefferson Judge Metha 2019.10.11 03:30 #19 タブに入力フィールドを追加しようとしているのですが、うまくいきません。input double whenToTrail=10.3; class CProgram: public CWndEvents { protected: CSpinEdit m_StartTS; //コード protected: bool CreatetrailStop(const int x_gap, const int y_gap, const string text); }; そこで関数 bool CProgram::CreatetrailStop(const int x_gap, const int y_gap, string text) { //--- メイン要素へのポインタを保存する m_StartTS.WindowPointer(m_window); //--- 座標 int x = m_window.X() + x_gap; int y = m_window.Y() + y_gap; //--- タブの予約 m_tabs.AddToElementsArray(1, m_StartTS); //--- プロパティ m_StartTS.XSize(95); m_StartTS.YSize(15); m_StartTS.EditXSize(40); m_StartTS.MinValue(0.01); m_StartTS.StepValue(0.01); m_StartTS.SetDigits(1); m_StartTS.SetValue(NormalizeDouble(whenToTrail,1)); m_StartTS.ResetMode(true); //--- コントロールの作成 if(!m_StartTS.CreateSpinEdit(m_chart_id, m_subwin, text, x, y)) return(false); //--- オブジェクト・グループの共通配列にオブジェクトを追加する。 CWndContainer::AddToElementsArray(0, m_StartTS); return(true); } で、チャートを削除してもオブジェクトは残ります。 barcla 2021.06.11 17:58 #20 インストールしようとしたのですが、コンパイルすると次のようなエラーが出ます: リソースファイル '∕ Images ∕ EasyAndFastGUI∕ Controls ∕ LeftTransp_black.bmp' not found Calendar.mqh 443 11 resource file '¦画像¦EasyAndFastGUI¦コントロール¦ LeftTransp_blue.bmp' not found Calendar.mqh 444 11 resource file '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ calendar_today.bmp' not found Calendar.mqh 738 11 resource file '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ calendar_drop_on.bmp' not found DropCalendar.mqh 435 11 リソースファイル '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ calendar_drop_off.bmp' not found DropCalendar.mqh 436 11 リソースファイル '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ calendar_drop_locked.bmp' not found DropCalendar.mqh 437 11 resource file '¦画像¦EasyAndFastGUI¦コントロール¦RightTransp_rotate_black.bmp' not found TreeItem.mqh 247 11 リソースファイル ' \ Images ˶ EasyAndFastGUI ˶ Controls ˶ RightTransp_rotate_white.bmp' not found TreeItem.mqh 248 11 リソースファイル '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ pointer_x_resize.bmp' not found Pointer.mqh 8 11 リソースファイル '¦画像¦EasyAndFastGUI¦コントロール¦ pointer_x_resize_blue.bmp' not found Pointer.mqh 9 11 リソースファイル '∕画像 ∕ EasyAndFastGUI ∕ コントロール ∕ pointer_y_resize.bmp' not found Pointer.mqh 10 11 resource file '¦画像¦EasyAndFastGUI¦コントロール¦ pointer_y_resize_blue.bmp' not found Pointer.mqh 11 11 リソースファイル '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ pointer_xy1_resize.bmp' not found Pointer.mqh 12 11 resource file '¦画像¦EasyAndFastGUI¦コントロール¦ pointer_xy1_resize_blue.bmp' not found Pointer.mqh 13 11 リソースファイル '¦画像 ¦ EasyAndFastGUI ¦コントロール ¦ pointer_xy2_resize.bmp' not found Pointer.mqh 14 11 resource file '¦画像¦EasyAndFastGUI¦コントロール¦ pointer_xy2_resize_blue.bmp' not found Pointer.mqh 15 11 リソースファイル '∕画像 ∕EasyAndFastGUI ∕アイコン ∕bmp16 ∕folder.bmp' not found FileNavigator.mqh 284 11 リソースファイル '∕画像∕EasyAndFastGUI∕アイコン∕bmp16∕text_file.bmp' not found FileNavigator.mqh 285 11 MQL5のzipファイルを見ましたが、ファイルがありません。 ありがとうございました。 Discussion of article "Graphical 記事"ドンチャンチャネルを使った取引"についてのディスカッション グラフィカルインタフェースVIII: ツリービューコントロール(チャプター2) 123 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もちろんだ。)
このクラス(CTabs)の次のアップデートは、「複数行タブ・モード」です。
ここ(複数行)のように:
スーパー。テーブルとリストが今のところテーブルとリストでしかないのは残念だ。今のところ、インタラクティブな機能はなく、実質的にデータの視覚化としての役割しか果たしていない。
もちろん、リストやテーブルの必要な列や行を取り出して選択し、それに対して何らかの操作を行いたい - 例えば、リストがあり、チェックボックスを付ける、あるいは一般的に必要な行を完全に選択し、選択された行の一般的なデータを別のウィンドウに表示する...。そのような何かはスーパーだろう :)
しかし、これを可能にするには、このデータを操作するためのメソッドを追加する必要がある。もしかしたら、すでにあるのかもしれないが。
素晴らしい。テーブルやリストが単なるテーブルやリストであるのは残念だ。今までのところ、それらは実質的にインタラクティブ性なしにデータの視覚化としてのみ機能している。
...
上記の大部分については、全て揃っている。
リスト(CListView)で項目を選択するとイベントが発生し、どの項目が選択されたのか、現在の値が選択されたのかを判断することができる。
テーブル(CTable)でも同様です。テーブルの行を選択すると、イベントが生成され、そのパラメータには行インデックス(dparam パラメータ)が含まれ、CTable::GetValue()メソッドを使用してこの行のセルの値を取得することができます:
//---
また、テーブルのセルを編集するモードでは、イベントが生成され、そのパラメータ(パラメータsparam)には、"column_row_text "の形式で、列番号、行番号、編集中のセルの現在の値を持つ文字列を取得することができます。
もちろん、リストやテーブルの必要な列や行を取り出して選択し、それに対して何らかの操作を行いたいんだ。例えば、リストがあって、チェックボックスを付けるとか、一般的に必要な行を選択して、選択した行の一般的なデータを別のウィンドウに表示するとか...。そのようなものがあれば最高です :)
チェックボックスとラジオボタンを持つリストについては、後で別のクラスを作るつもりだ。
単純なCLabelやCEDITコントロールをフォームに追加する方法がわかりません(objects.mqhより) これらはWindowPointer()のような関数を持っていません。(objects.mqhより)
これらのオブジェクトはWindowPointer()のような関数を持って いません。
これらのオブジェクトを作成することはできますが、ウィンドウにアタッチすることができません。
この場合、動作しません...
2.)
CComboBoxは静的オブジェクトですか?の要素リストを変更することは可能ですか?
ComboBoxの作成後、ComboBox-Listviewの要素のリストを変更することは可能ですか?
ありがとうございます!
トール、何か勝てない...。つのウィンドウがある。メインメニューから2つ目のウィンドウを開くと、アイコンの付いた4つのタブがある。それぞれのタブにはテーブルがあります。
問題はこうです:最初のウィンドウを開くと、一番最近に作られたテーブルが常に表示され、ウィンドウを開く前にプログラムで必要なタブに切り替えても関係ありません。
例を作ってみた。最初のウィンドウを開いたところ:
メタトレーダー取引プラットフォームのスクリーンショット
EURUSD, D1, 2016.11.03
MetaQuotes Software Corp.、MetaTrader 5、デモ
ご覧のように、タブ1はハイライトされていますが、タブ4にバインドされているテーブルが表示されています - それはテーブル自体の列ヘッダーに書かれています。
さらに、タブを切り替えると、テーブルがあるべき場所に配置されるので、マウスで2番目のタブを強調表示しました:
メタトレーダー取引プラットフォームのスクリーンショット
EURUSD, D1, 2016.11.03
MetaQuotes Software Corp.、メタトレーダー5、デモ
最初の画面に戻る
MetaTrader取引プラットフォームのスクリーンショット
EURUSD, D1, 2016.11.03
MetaQuotes Software Corp.
私は何か間違っていますか?それともバグ?
トレーラーのファイルインジケータ.
...
何か間違っているのだろうか?それともバグですか?
CTabs タブでは正しく動作します。しかし、CIconTabs タブについては、ライブラリエンジンの個人配列と、ダイアログボックスを 開いたときに選択されたタブの内容を自動的に表示する 機能をまだ作っていません。これは次のアップデートで修正する予定です。
しかし、一時的な解決策として、すでにカスタム・クラスでダイアログ・ボックスが開かれたことを追跡し、下のリストのようにタブを更新することができます:
//| イベントハンドラ|
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_CUSTOM+ON_OPEN_DIALOG_BOX)
{
if(lparam==m_window2.Id())
m_icon_tabs.ShowTabElements();
}
}
CTabs タイプのタブでは正しく動作します。しかし、CIconTabs タブについては、ライブラリエンジンの個人配列と、ダイアログウィンドウを開いたときに選択されたタブの内容を自動的に表示する 機能をまだ作っていません。これは次のアップデートで修正する予定です。
しかし、一時的な解決策として、ダイアログボックスが開いたことをカスタムクラスで追跡し、下のリストのようにタブを更新することができます:
//| イベントハンドラ|
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_CUSTOM+ON_OPEN_DIALOG_BOX)
{
if(lparam==m_window2.Id())
m_icon_tabs.ShowTabElements();
}
}
タブに入力フィールドを追加しようとしているのですが、うまくいきません。
そこで関数
で、チャートを削除してもオブジェクトは残ります。