Anatoli Kazharski: MetaTrader 5を使ってください。MetaTrader 4のバージョンはもうサポートされていないので、何もアドバイスできません。
ご回答ありがとうございました。(n.b.私はそれが新しいビルドで動作するかどうかを尋ねました)
下記はOKですか?
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ bool CColorPicker::CreateArea(void) { //--- Формирование имени объекта string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id(); //--- Координаты int x=CElementBase::X(); int y=CElementBase::Y(); //--- Создать объект if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size)) return(false); //--- Свойства m_area.BackColor(m_area_color); m_area.Color(m_area_border_color); m_area.BorderType(BORDER_FLAT); m_area.Corner(m_corner); m_area.Selectable(false); m_area.Z_Order(m_area_zorder); m_area.Tooltip("\n"); //--- Координаты m_canvas.X(x); m_canvas.Y(y); //--- Размеры m_canvas.XSize(m_x_size); m_canvas.YSize(m_y_size); //--- Отступы от крайней точки m_area.XGap(CElement::CalculateXGap(x)); m_area.YGap(CElement::CalculateYGap(y)); //--- Сохраним указатель объекта CElementBase::AddToArray(m_area); return(true); }
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ bool CColorPicker::CreateArea(void) { //--- Формирование имени объекта string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id(); //--- Координаты int x=CElementBase::X(); int y=CElementBase::Y(); //--- Создать объект if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size)) return(false); //--- Свойства m_area.BackColor(m_area_color); m_area.Color(m_area_border_color); m_area.BorderType(BORDER_FLAT); m_area.Corner(m_corner); m_area.Selectable(false); m_area.Z_Order(m_area_zorder); m_area.Tooltip("\n"); //--- Координаты m_canvas.X(x); m_canvas.Y(y); //--- Размеры m_canvas.XSize(m_x_size); m_canvas.YSize(m_y_size); //--- Отступы от крайней точки m_area.XGap(CElement::CalculateXGap(x)); m_area.YGap(CElement::CalculateYGap(y)); //--- Сохраним указатель объекта CElementBase::AddToArray(m_area); return(true); }
新しいBuild6,7,8,9でお願いします。
MetaTrader 5を使ってください。MetaTrader 4のバージョンはもうサポートされていないので、何もアドバイスできません。
下記はOKですか?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
bool CColorPicker::CreateArea(void)
{
//--- Формирование имени объекта
string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id();
//--- Координаты
int x=CElementBase::X();
int y=CElementBase::Y();
//--- Создать объект
if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size))
return(false);
//--- Свойства
m_area.BackColor(m_area_color);
m_area.Color(m_area_border_color);
m_area.BorderType(BORDER_FLAT);
m_area.Corner(m_corner);
m_area.Selectable(false);
m_area.Z_Order(m_area_zorder);
m_area.Tooltip("\n");
//--- Координаты
m_canvas.X(x);
m_canvas.Y(y);
//--- Размеры
m_canvas.XSize(m_x_size);
m_canvas.YSize(m_y_size);
//--- Отступы от крайней точки
m_area.XGap(CElement::CalculateXGap(x));
m_area.YGap(CElement::CalculateYGap(y));
//--- Сохраним указатель объекта
CElementBase::AddToArray(m_area);
return(true);
}
ご回答ありがとうございました。(n.b.新しいビルドで動くか聞いてみました) 以下でOKでしょうか?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
bool CColorPicker::CreateArea(void)
{
//--- Формирование имени объекта
string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id();
//--- Координаты
int x=CElementBase::X();
int y=CElementBase::Y();
//--- Создать объект
if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size))
return(false);
//--- Свойства
m_area.BackColor(m_area_color);
m_area.Color(m_area_border_color);
m_area.BorderType(BORDER_FLAT);
m_area.Corner(m_corner);
m_area.Selectable(false);
m_area.Z_Order(m_area_zorder);
m_area.Tooltip("\n");
//--- Координаты
m_canvas.X(x);
m_canvas.Y(y);
//--- Размеры
m_canvas.XSize(m_x_size);
m_canvas.YSize(m_y_size);
//--- Отступы от крайней точки
m_area.XGap(CElement::CalculateXGap(x));
m_area.YGap(CElement::CalculateYGap(y));
//--- Сохраним указатель объекта
CElementBase::AddToArray(m_area);
return(true);
}
たとえば、次のようにする必要があります:
WndEvents.mqhのpublicエリアに新しいメソッドを作成します:
bool CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index,int x,int y);
//|| 色を選択するためのカラーパレットを作成する。
//+------------------------------------------------------------------+
bool CWndEvents::CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index, int x, int y)
{
//--- 座標を再計算する
int x_gap=x-wnd_pointer.X();
int y_gap=y-wnd_pointer.Y();
//--- ウィンドウ・ポインタを保存する
color_picker.WindowPointer(wnd_pointer);
//--- 要素の作成
if(!color_picker.CreateColorPicker(m_chart_id,m_subwin,x_gap,y_gap))
return(false);
//--- ベースの要素へのポインタを追加する。
CWndContainer::AddToElementsArray(wnd_index,color_picker);
return(true);
}
//+------------------------------------------------------------------+
そしてCProgram.mqhにColorPickerを作成します:
x=m_window_main.X2()+1;
y=m_window_main.Y();
if(!CreateColorPicker(m_color_picker,m_window_main,m_window_main_index,x,y))
return(false);
...
MQL4バージョンをサポートしていないことは知っていますが、MQL4が理由ではないと思います。
ライブラリの最新バージョンでは、 オブジェクトの座標 計算が異なっていた。 新しいルールで オブジェクトの座標を 指定するか、 独自の メソッドで 通常の 方法で座標を 再計算 する必要が あります。 ....
W_DIALOGウィンドウで確認していただけますか?
このライブラリのColorPickerはカスタムカラーを微調整するための非常に強力なツールですが、日常的に使用するにはシンプルなカラーテーブルの方が便利なのではないでしょうか?
チュートリアルをありがとう。 座標 計算を 確認して変更しました。私の環境 ではColorPickerは正常に動作して いますが、メインウィンドウ(W_MAIN)に表示した場合のみです。
W_DIALOGウィンドウで確認していただけないでしょうか。
このライブラリのColorPickerはカスタムカラーを微調整するための非常に強力なツールですが、日常的に使用するにはシンプルなカラーテーブルの方が便利かと思います。
ご苦労様です!このバージョンでは、列によるソートと行の削除は可能ですか?
ご苦労様です!列によるソートと行の削除はこのバージョンで可能ですか?
こんにちは。入力フィールド SpinEditがあります:
イベントハンドラがあります:
そして、NormalizeDouble 関数の後でも、入力フィールドの右側のインクリメント/デクリメントをクリックすると、そのような値が得られます:
キーボードから入力する場合は、すべて正しいです。
何が原因でしょうか?