パネルやダイアログを作成するためのクラス - ページ 3 1234567 新しいコメント Anatoli Kazharski 2016.10.28 10:54 #21 Slawa:どのような症状なのでしょうか? Dimitriは、 サブウィンドウ(indicator_separate_window)にあるインジケータのGUIを、メインチャートウィンドウに作成する必要があります。 Anatoli Kazharski 2016.10.28 11:18 #22 Dmitry Fedoseev: だからとにかく、私もちょっと困っているんです。) このモード、すなわち「サブウィンドウにインジケータを配置し、そのGUIをメインチャートウィンドウに 表示する」モードは、これまで私のライブラリではテストされていませんでした。現在、小さなバグがあり、閉じるボタンを押してもインジケータを削除できないこと、またサブウィンドウに他のインジケータを配置/削除した後にサブウィンドウ番号を決定すると衝突するため、いくつかのケースで間違ったイベントハンドリングになって しまうことがあるそうです。 このモードのためにライブラリを改良する予定ですが、もう少し後、これは将来のバージョンで利用できるようになります。さまざまなシチュエーションで入念にテストする必要があるため、しばらく時間がかかると思います。代替案として、すでにテストされ動作しているものから、以下のものを提案することができます。インジケーターサブウィンドウには、様々な方法でインジケーターパネルを配置することができます。以下のスクリーンショットのように、(1)インジケーターサブウィンドウと一緒にパネルを最小化するモード、(2)インジケーターサブウィンドウに触れずにパネルのみを最小化するモード、があります。サブウィンドウは、(1)高さ固定、(2)手動で自由に大きさを変更可能です。しかし、この場合にも一つの制約があります。グラフ上にグラフィカルなインターフェイスを持つMQLアプリケーションは1つしか存在できない。そうでなければ、コンフリクトが発生します。//---提案されたオプションが適切であれば、テンプレートを用意するつもりです。そうでない場合は、残念ながら、お力になれません。テスト用のファイルはアーカイブにあります。 ファイル: Test.zip 8 kb Dmitry Fedoseev 2016.10.28 11:20 #23 Slawa:何も不具合はない。どのような症状なのでしょうか?今、試してみました。まずサブウインドウにインジケータを表示します。続いて、チャートのパネル。そして、サブウィンドウに同様のパネルが表示されます。最初のサブウィンドウにSimplePanel2が表示されただけでした。でも、操作に支障はないんです。すべてのボタンが正しく押される。SimplePanel2とSimplePanelの違いはindicator_chart_windowプロパティのみです。グラフウィンドウのSimplePanelを作り直してみましたが、こちらも問題なく動作しています。サブウィンドウとチャート上、サブウィンドウが通常のインジケータである場合、どちらも動作します。しかし、SimplePanel(価格チャート上とサブウィンドウの両方)、そしてサブウィンドウで標準のインディケータを実行すると、価格チャート上にあるパネルが不具合を起こします。ウィンドウは最小化され、展開しようとすると、一瞬展開し、また最小化されます。私のは、サブウインドウに標準のインジケータを追加すると不具合が発生します。以下は、インクルードファイルのコードです。#include <Controls\Dialog.mqh>#include <Controls\Edit.mqh>#include <Controls\ComboBox.mqh>#include <Controls\Label.mqh>#define INDENT 11#define LINE 20class CPanTest:public CAppDialog{ protected: CComboBox m_cmb_main; CEdit m_edit1; void OnMainEvent(){ } void OnControlEvent(){ } public: bool Create(){ if(!CAppDialog::Create(0,"name",0,20,20,200,300)){ return(false); } return(true); } bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);}; EVENT_MAP_BEGIN(CPanTest) ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent) ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent) EVENT_MAP_END(CAppDialog)指標となる。#property version "1.00"#property indicator_chart_window#property indicator_buffers 0#property indicator_plots 0#include <CPanTest.mqh> CPanTest * pan;//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int OnInit(){ pan=new CPanTest(); if(!pan.Create()){ return(INIT_FAILED); } if(!pan.Run()){ return(INIT_FAILED); } return(INIT_SUCCEEDED);}void OnDeinit(const int reason){ pan.Destroy(); delete(pan);} int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]){ return(rates_total);}void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam){ pan.ChartEvent(id,lparam,dparam,sparam);} Classes for creating panels エラー、バグ、質問 エキスパートアドバイザー - 雑多な質問 Dmitry Fedoseev 2016.10.28 11:30 #24 Anatoli Kazharski:とにかく、私もちょっと困っているんです。) このモード、つまり「サブウィンドウにインジケータ、メインチャートウィンドウにそのGUI」というのは、私のライブラリでは以前からテストされておらず、現在、小さなバグがあり、閉じるボタンを押してもインジケータを削除できない、また、サブウィンドウに他のインジケータを配置/削除した後にサブウィンドウ番号を決める際に衝突があり、いくつかのケースで誤ったイベント処理が 行われるようになってしまっています。 このモードのためにライブラリを改良する予定ですが、もう少し後、これは将来のバージョンで利用できるようになります。さまざまなシチュエーションで入念にテストする必要があるため、しばらく時間がかかると思います。代替案として、すでにテストされ動作しているものから、以下のものを提案することができます。インジケーターバーは、インジケーターサブウィンドウ内に様々な方法で配置することができます。以下のスクリーンショットのように、(1)インジケーターサブウィンドウと一緒にパネルを最小化するモード、(2)インジケーターサブウィンドウに触れずにパネルのみを最小化するモード、があります。サブウィンドウは、(1)高さ固定、(2)手動で自由に大きさを変更可能です。しかし、この場合にも一つの制約があります。グラフ上にグラフィカルなインターフェイスを持つMQLアプリケーションは1つしか存在できない。そうでなければ、コンフリクトが発生します。//---提案されたオプションが適切であれば、テンプレートを用意するつもりです。そうでない場合は、残念ながら、お力になれません。テスト用のファイルはアーカイブにあります。 ポドックに入れましょう。サブウィンドウの中で自由にぶら下がり、サブウィンドウから独立して折りたため、サブウィンドウを拡大縮小できること。 Anatoli Kazharski 2016.10.28 11:42 #25 Dmitry Fedoseev: サブウインドウにする。サブウィンドウの中で自由にぶら下がること、サブウィンドウから独立して折りたたむこと、サブウィンドウがスケーラブルであること。アーカイブの中にテンプレートファイルがあります。何か質問があれば、お答えします。 ファイル: Test.zip 4 kb Dmitry Fedoseev 2016.10.28 11:58 #26 Anatoli Kazharski:アーカイブの中にテンプレートファイルがあります。何か質問があれば、お答えします。間違いがあったようです。 Anatoli Kazharski 2016.10.28 12:34 #27 Dmitry Fedoseev:間違いがあったようです。ああ、もう次のバージョンに向けた変更が進んでいるんだ。全部同じにします。) 前回記事からのバージョンに修正しました。もうひと頑張り。 ファイル: Test.zip 4 kb Dmitry Fedoseev 2016.10.29 09:30 #28 Anatoli Kazharski:ああ、もう次のバージョンに向けた変更が進んでいるんだ。すべてを同じにすること。) 前回記事からのバージョンに修正しました。もうひと頑張り。 え...もうちょっとリソースが足りないというエラーが多発するようになりました。 Anatoli Kazharski 2016.10.29 09:32 #29 Dmitry Fedoseev: え...もうちょっと今は、リソースが足りないというエラーが多発しています。 図書館で使用した資料は、連載の最終回にすべて添付しています。ログメッセージはどのようなものですか? Dmitry Fedoseev 2016.10.29 09:34 #30 Anatoli Kazharski: 図書館で使用した資料はすべて連載の最終回に添付しています。 ログブックに書かれているメッセージは何ですか? 不足しているリソースに関するメッセージ。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どのような症状なのでしょうか?
だから
とにかく、私もちょっと困っているんです。) このモード、すなわち「サブウィンドウにインジケータを配置し、そのGUIをメインチャートウィンドウに 表示する」モードは、これまで私のライブラリではテストされていませんでした。現在、小さなバグがあり、閉じるボタンを押してもインジケータを削除できないこと、またサブウィンドウに他のインジケータを配置/削除した後にサブウィンドウ番号を決定すると衝突するため、いくつかのケースで間違ったイベントハンドリングになって しまうことがあるそうです。
このモードのためにライブラリを改良する予定ですが、もう少し後、これは将来のバージョンで利用できるようになります。さまざまなシチュエーションで入念にテストする必要があるため、しばらく時間がかかると思います。
代替案として、すでにテストされ動作しているものから、以下のものを提案することができます。インジケーターサブウィンドウには、様々な方法でインジケーターパネルを配置することができます。以下のスクリーンショットのように、(1)インジケーターサブウィンドウと一緒にパネルを最小化するモード、(2)インジケーターサブウィンドウに触れずにパネルのみを最小化するモード、があります。サブウィンドウは、(1)高さ固定、(2)手動で自由に大きさを変更可能です。しかし、この場合にも一つの制約があります。グラフ上にグラフィカルなインターフェイスを持つMQLアプリケーションは1つしか存在できない。そうでなければ、コンフリクトが発生します。
//---
提案されたオプションが適切であれば、テンプレートを用意するつもりです。そうでない場合は、残念ながら、お力になれません。
テスト用のファイルはアーカイブにあります。
何も不具合はない。どのような症状なのでしょうか?
今、試してみました。まずサブウインドウにインジケータを表示します。続いて、チャートのパネル。そして、サブウィンドウに同様のパネルが表示されます。最初のサブウィンドウにSimplePanel2が表示されただけでした。でも、操作に支障はないんです。すべてのボタンが正しく押される。
SimplePanel2とSimplePanelの違いはindicator_chart_windowプロパティのみです。
グラフウィンドウのSimplePanelを作り直してみましたが、こちらも問題なく動作しています。サブウィンドウとチャート上、サブウィンドウが通常のインジケータである場合、どちらも動作します。しかし、SimplePanel(価格チャート上とサブウィンドウの両方)、そしてサブウィンドウで標準のインディケータを実行すると、価格チャート上にあるパネルが不具合を起こします。ウィンドウは最小化され、展開しようとすると、一瞬展開し、また最小化されます。
私のは、サブウインドウに標準のインジケータを追加すると不具合が発生します。以下は、インクルードファイルのコードです。
#include <Controls\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\Label.mqh>
#define INDENT 11
#define LINE 20
class CPanTest:public CAppDialog{
protected:
CComboBox m_cmb_main;
CEdit m_edit1;
void OnMainEvent(){
}
void OnControlEvent(){
}
public:
bool Create(){
if(!CAppDialog::Create(0,"name",0,20,20,200,300)){
return(false);
}
return(true);
}
bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
};
EVENT_MAP_BEGIN(CPanTest)
ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent)
ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent)
EVENT_MAP_END(CAppDialog)
指標となる。
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <CPanTest.mqh>
CPanTest * pan;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(){
pan=new CPanTest();
if(!pan.Create()){
return(INIT_FAILED);
}
if(!pan.Run()){
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason){
pan.Destroy();
delete(pan);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
pan.ChartEvent(id,lparam,dparam,sparam);
}
とにかく、私もちょっと困っているんです。) このモード、つまり「サブウィンドウにインジケータ、メインチャートウィンドウにそのGUI」というのは、私のライブラリでは以前からテストされておらず、現在、小さなバグがあり、閉じるボタンを押してもインジケータを削除できない、また、サブウィンドウに他のインジケータを配置/削除した後にサブウィンドウ番号を決める際に衝突があり、いくつかのケースで誤ったイベント処理が 行われるようになってしまっています。
このモードのためにライブラリを改良する予定ですが、もう少し後、これは将来のバージョンで利用できるようになります。さまざまなシチュエーションで入念にテストする必要があるため、しばらく時間がかかると思います。
代替案として、すでにテストされ動作しているものから、以下のものを提案することができます。インジケーターバーは、インジケーターサブウィンドウ内に様々な方法で配置することができます。以下のスクリーンショットのように、(1)インジケーターサブウィンドウと一緒にパネルを最小化するモード、(2)インジケーターサブウィンドウに触れずにパネルのみを最小化するモード、があります。サブウィンドウは、(1)高さ固定、(2)手動で自由に大きさを変更可能です。しかし、この場合にも一つの制約があります。グラフ上にグラフィカルなインターフェイスを持つMQLアプリケーションは1つしか存在できない。そうでなければ、コンフリクトが発生します。
//---
提案されたオプションが適切であれば、テンプレートを用意するつもりです。そうでない場合は、残念ながら、お力になれません。
テスト用のファイルはアーカイブにあります。
サブウインドウにする。サブウィンドウの中で自由にぶら下がること、サブウィンドウから独立して折りたたむこと、サブウィンドウがスケーラブルであること。
アーカイブの中にテンプレートファイルがあります。何か質問があれば、お答えします。
アーカイブの中にテンプレートファイルがあります。何か質問があれば、お答えします。
間違いがあったようです。
間違いがあったようです。
ああ、もう次のバージョンに向けた変更が進んでいるんだ。全部同じにします。)
前回記事からのバージョンに修正しました。もうひと頑張り。
ああ、もう次のバージョンに向けた変更が進んでいるんだ。すべてを同じにすること。)
前回記事からのバージョンに修正しました。もうひと頑張り。
え...もうちょっと今は、リソースが足りないというエラーが多発しています。
図書館で使用した資料はすべて連載の最終回に添付しています。 ログブックに書かれているメッセージは何ですか?