記事"エキスパートアドバイザとインディケータに素早く制御パネルを追加する方法"についてのディスカッション - ページ 2 1234 新しいコメント Andrey Khatimlianskii 2016.03.09 05:19 #11 Maxim Dmitrievsky:まあ、そうしたんだけど、何も動かないんだ。パネルは以前のように白いままだ。コンパイラーはMacro redifinition、つまり過分割のようだと言っている。最初のアドバイス、元のファイルの色を置き換えて、EAを再コンパイルしてください。パネルの色をどのように再定義したかを思い出すには、いろいろ調べる必要があるが、今は時間がない。 Andrey Khatimlianskii 2016.03.10 13:21 #12 歴史のために 取引、自動取引システム、取引戦略のテストに関するフォーラム Expert Advisorの設定を更新する際にパネルが離れてしまうのはなぜですか? Andrey Khatimlianskii, 2016.03.10 13:17 だいたいこんな感じです:// Dialog.mqhに接続する前に! #include <Controls\Defines.mqh> //--- 古い色は忘れよう #undef CONTROLS_DIALOG_COLOR_BORDER_LIGHT #undef CONTROLS_DIALOG_COLOR_BORDER_DARK #undef CONTROLS_DIALOG_COLOR_BG #undef CONTROLS_DIALOG_COLOR_CAPTION_TEXT #undef CONTROLS_DIALOG_COLOR_CLIENT_BG #undef CONTROLS_DIALOG_COLOR_CLIENT_BORDER //--- 新しい色を設定する #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT clrWhite // ダイアログのボーダーの色(外側) #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0xB6,0xB6,0xB6' // ダイアログの枠の色(内側) #define CONTROLS_DIALOG_COLOR_BG clrLightGreen // ダイアログの背景 (キャプションの下とクライアントエリアの周囲) #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x28,0x29,0x3B' // ダイアログのキャプション・テキストの色 #define CONTROLS_DIALOG_COLOR_CLIENT_BG clrAliceBlue // クライアントエリアの背景色 #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0xC8,0xC8,0xC8' // クライアント・エリアの色 // 接続 #include <Controls\Dialog.mqh> Evgeny Potapov 2016.04.04 16:31 #13 CWndContainerが.Show()を使ってチャット画面に少なくとも四角を表示するための簡単な例を教えてください。例えば、このようにいろいろ試しましたが、エラーも画像も、.Show()が動作する兆候もありません。#include <Controls\WndContainer.mqh> class MyWndContainer : public CWndContainer { public: MyWndContainer(string name); }; //+------------------------------------------------------------------+ //| コンストラクタ| //+------------------------------------------------------------------+ MyWndContainer::MyWndContainer(string name) { m_chart_id = ChartID(); m_subwin = 0; m_name = name; m_id = 0; m_align_top = 5; m_align_right = 5; m_align_left = 5; m_align_bottom = 5; m_mouse_x = 100; m_mouse_y = 100; m_align_flags = ALIGN_CENTER; m_prop_flags = PROGRAM_EXPERT; m_mouse_flags = MOUSE_EMPTY; } Vladimir Karputov 2016.04.04 16:39 #14 Evgeny Potapov:CWndContainerが.Show()を使ってチャット画面に少なくとも正方形を表示するためにどのようにひねればいいか、簡単な例を教えてもらえますか?例えば、このようにいろいろ試しましたが、エラーも画像も.Show()が機能する兆候もありません。 なぜCWndContainerな のですか?最終的に何が得られますか? Evgeny Potapov 2016.04.04 16:43 #15 このロジックが理解できません://+------------------------------------------------------------------+ //| コントロールのグループを表示する //+------------------------------------------------------------------+ bool CWndContainer::Show(void) { //--- グループの要素ごとにループする int total=m_controls.Total(); for(int i=0;i<total;i++) { CWnd *control=Control(i); //--- ポインタのチェック if(control==NULL) continue; control.Show(); } //--- 親クラスのメソッドの呼び出し return(CWnd::Show()); } Buttonオブジェクトがあり、そのオブジェクトに.Show()メソッドがなかったらどうなるのでしょうか?コンテナの中に入れることはできないのでしょうか? Evgeny Potapov 2016.04.04 16:44 #16 Karputov Vladimir: なぜCWndContainerなのか?最終的に何が得られるのか? 買いと売りのボタンと、Expert Advisorの状態に関するいくつかの通知があるパネル。しかし、マウスで画面上をドラッグできるはずなのに、ボタンがドラッグされない。 Vladimir Karputov 2016.04.04 16:49 #17 Evgeny Potapov: ExpertAdvisorの状態について、買い-売りボタンといくつかのより多くの通知を持つパネル。しかし、それはマウスで画面上にドラッグされなければなりませんが、ボタンはドラッグされません。オブジェクト(ボタン、リスト、テキストフィールドなど)を作成した 後、このオブジェクトをパネルに追加します(Addメソッド)。そうすれば、パネルをドラッグするとき、すべてのオブジェクトはパネルと一緒に移動します。 Evgeny Potapov 2016.04.04 16:51 #18 Karputov Vladimir: オブジェクト(ボタン、リスト、テキストフィールドなど)を作成 したら、このオブジェクトをパネルに追加します(Addメソッド)。そして、パネルをドラッグすると、すべてのオブジェクトはパネルと一緒に移動します。こんな感じ?#include <Controls\Button.mqh> #include <MyControls\MyWndContainer.mqh> CButton *MyButton; CWndContainer *MyContainer; //+------------------------------------------------------------------+ //| エキスパート初期化関数| //+------------------------------------------------------------------+ int OnInit() { MyButton = new CButton; if(CheckPointer(MyButton) == POINTER_INVALID) return(INIT_FAILED); MyButton.Create(ChartID(),WindowExpertName()+"_button",0,50,100,150,250); MyContainer = new MyWndContainer("MyContainer"); if(CheckPointer(MyContainer) == POINTER_INVALID) return(INIT_FAILED); MyContainer.Add(MyButton); MyContainer.Show(); MyContainer.Enable(); return(INIT_SUCCEEDED); } Evgeny Potapov 2016.04.04 16:53 #19 Karputov Vladimir: オブジェクト(ボタン、リスト、テキスト・フィールドなど)を作成 したら、このオブジェクトをパネルに追加します(Addメソッド)。それから、パネルをドラッグすると、すべてのオブジェクトはパネルと一緒に移動します。それとも、これは「パネルに追加」ではないのでしょうか?コンテナはパネルではないのですか? Vladimir Karputov 2016.04.04 17:01 #20 Evgeny Potapov:それとも "パネルに加える "ことではないのでしょうか?コンテナはパネルではないのですか?記事の中のPanelDialog2.mqh ファイルを例として使います://+------------------------------------------------------------------+ //|PanelDialog2.mqh //| Copyright 2015, MetaQuotes Software Corp. //|http://mql5.commql5.com //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\CheckGroup.mqh> #include <Controls\Label.mqh> #include <Controls\Edit.mqh> #include <Controls\Button.mqh> //+------------------------------------------------------------------+ //| 定義| //+------------------------------------------------------------------+ //--- インデントとギャップ #define INDENT_LEFT (11) // 左からインデントする(ボーダーの幅を考慮する) #define INDENT_TOP (11) // 上からインデント(ボーダーの幅に余裕を持たせる) #define INDENT_RIGHT (11) // 右からインデントする(ボーダーの幅を考慮する) #define INDENT_BOTTOM このファイルはダイアログ・パネルの要素を作成します。パネルの符号はCDialog クラスです。CDialogクラス CDialogクラスはDialogコンボコントロールのクラスです。説明CDialogクラスは、機能的に関連する異種の要素群を視覚的に結合するように設計されています。 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まあ、そうしたんだけど、何も動かないんだ。パネルは以前のように白いままだ。
コンパイラーはMacro redifinition、つまり過分割のようだと言っている。
最初のアドバイス、元のファイルの色を置き換えて、EAを再コンパイルしてください。
パネルの色をどのように再定義したかを思い出すには、いろいろ調べる必要があるが、今は時間がない。
歴史のために
取引、自動取引システム、取引戦略のテストに関するフォーラム
Expert Advisorの設定を更新する際にパネルが離れてしまうのはなぜですか?
Andrey Khatimlianskii, 2016.03.10 13:17
だいたいこんな感じです:
CWndContainerが.Show()を使ってチャット画面に少なくとも四角を表示するための簡単な例を教えてください。
例えば、このようにいろいろ試しましたが、エラーも画像も、.Show()が動作する兆候もありません。
CWndContainerが.Show()を使ってチャット画面に少なくとも正方形を表示するためにどのようにひねればいいか、簡単な例を教えてもらえますか?
例えば、このようにいろいろ試しましたが、エラーも画像も.Show()が機能する兆候もありません。
このロジックが理解できません:
Buttonオブジェクトがあり、そのオブジェクトに.Show()メソッドがなかったらどうなるのでしょうか?
コンテナの中に入れることはできないのでしょうか?
なぜCWndContainerなのか?最終的に何が得られるのか?
ExpertAdvisorの状態について、買い-売りボタンといくつかのより多くの通知を持つパネル。しかし、それはマウスで画面上にドラッグされなければなりませんが、ボタンはドラッグされません。
オブジェクト(ボタン、リスト、テキストフィールドなど)を作成 したら、このオブジェクトをパネルに追加します(Addメソッド)。そして、パネルをドラッグすると、すべてのオブジェクトはパネルと一緒に移動します。
こんな感じ?
オブジェクト(ボタン、リスト、テキスト・フィールドなど)を作成 したら、このオブジェクトをパネルに追加します(Addメソッド)。それから、パネルをドラッグすると、すべてのオブジェクトはパネルと一緒に移動します。
それとも、これは「パネルに追加」ではないのでしょうか?
コンテナはパネルではないのですか?
それとも "パネルに加える "ことではないのでしょうか?
コンテナはパネルではないのですか?
記事の中のPanelDialog2.mqh ファイルを例として使います:
このファイルはダイアログ・パネルの要素を作成します。パネルの符号はCDialog クラスです。
CDialogクラスはDialogコンボコントロールのクラスです。
説明
CDialogクラスは、機能的に関連する異種の要素群を視覚的に結合するように設計されています。