コントロールパネル及びダイアログ作成のクラス


CRect

CRect はチャートの矩形領域のクラスです。

説明

CRect は、デカルト座標で矩形の左上と右下の角の両方の座標で定義される、領域のクラスです。

宣言

  class CRect

タイトル

  #include <ControlsRect.mqh>

クラスメソッド

プロパティ

 

Left

左上の隅の X 座標を取得/設定します。

Top

左上の隅の Y 座標を取得/設定します。

Right

右下の隅の X 座標を取得/設定します。

Bottom

右下の隅の Y 座標を取得/設定します。

Width

幅を取得/設定します。

Height

高さを取得/設定します。

SetBound

CRect クラスの座標を使用して領域の新しい座標を設定します。

Move

CRect クラスの新しい座標を設定します。

Shift

CRect 座標の相対的なシフトを行います。

Contains

点が CRect クラス領域の内側に位置するかどうかをチェックします。

追加メソッド

 

Format

領域の座標を文字列として取得します。

 

CDateTime

CDateTime は日付と時刻の操作に使用される構造体です。

説明

CDateTime 構造体は MqlDateTime から派生し、コントロールの日付と時刻の操作に使用されます。

宣言

  struct CDateTime

タイトル

  #include <ToolsDateTime.mqh>

クラスメソッド

プロパティ

 

MonthName

月の名前を取得します。

ShortMonthName

月の短縮名を取得します。

DayName

曜日名を取得します。

ShortDayName

曜日の短縮名を取得します。

DaysInMonth

月の日数を取得します。

Get/Set methods

 

DateTime

日付と時刻を取得/設定します。

Date

日付を設定します。

Time

時刻を設定します。

Sec

秒を設定します。

Min

分を設定します。

Hour

時間を設定します。

Day

月の日を設定します。

Mon

月を設定します。

Year

年を設定します。

追加メソッド

 

SecDec

指定された秒数を減算します。

SecInc

指定された秒数を加算します。

MinDec

指定された分数を減算します。

MinInc

指定された分数を加算します。

HourDec

指定された時間数を減算します。

HourInc

指定された時間数を加算します。

DayDec

指定された日数を減算します。

DayInc

指定された日数を加算します。

MonDec

指定された月数を減算します。

MonInc

指定された月数を加算します。

YearDec

指定された年数を減算します。

YearInc

指定された年数を加算します。

 

CWnd

CWnd は MQL5 標準ライブラリに含まれている全てのコントロールの基本クラスです。

説明

CWnd クラスは基本コントロールクラスの実装です。

宣言

  class CWnd : public CObject

タイトル

  #include <ControlsWnd.mqh>

継承階層

  CObject

      CWnd

直接子孫

CDragWnd, CWndContainer, CWndObj

クラスメソッド

作成と破壊

 

Create

コントロールの作成

Destroy

コントロールの破壊

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

OnMouseEvent

CHARTEVENT_MOUSE_MOVE イベントのハンドラ

名称

 

Name

コントロールの名称を取得します。

コンテナへのアクセス

 

ControlsTotal

コンテナのコントロール数を取得します。

Control

コントロールをインデックスで取得します。

ControlFind

コントロールを識別子で取得します。

ジオメトリ

 

Rect

CRect クラスオブジェクトへのポインタを取得します。

Left

左上の隅の X 座標を取得/設定します。

Top

左上の隅の Y 座標を取得/設定します。

Right

右下の隅の X 座標を取得/設定します。

Bottom

右下の隅の Y 座標を取得/設定します。

Width

幅を取得/設定します。

Height

高さを取得/設定します。

Move

コントロールの新しい座標を設定します。

Shift

コントロール座標の相対的なシフトを行います。

Resize

コントロールの新しい幅/高さを設定します。

Contains

点/コントロールがコントロール領域の内側に位置するかどうかをチェックします。

Align

 

Alignment

コントロールのアラインメントプロパティを設定します。

Align

コントロールのアラインメントを行います。

識別

 

Id

コントロールの識別子を取得/設定します。

State

 

IsEnabled

コントロールが有効かどうかを示す値を取得します。

Enable

コントロールが有効かどうかを示す値を設定します。

Disable

コントロールを無効にします。

IsVisible

可視性フラグをチェックします。

Visible

可視性フラグを設定します。

Show

コントロールを表示します。

Hide

コントロールを非表示にします。

IsActive

コントロールのアクティビティをチェックします。

Activate

コントロールをアクティブにします。

Deactivate

コントロールを無効にします。

状態フラグ

 

StateFlags

コントロールの状態フラグを取得/設定します。

StateFlagsSet

コントロールの状態フラグを設定します。

StateFlagsReset

コントロールの状態フラグをリセットします。

Properties flags

 

PropFlags

コントロールのプロパティフラグを取得/設定します。

PropFlagsSet

コントロールのプロパティフラグを設定します。

PropFlagsReset

コントロールのプロパティフラグをリセットします。

マウス操作

 

MouseX

マウスの X 座標を取得/保存します。

MouseY

マウスの Y 座標を取得/保存します。

MouseFlags

マウスボタンの状態を取得/保存します。

MouseFocusKill

マウスのフォーカスをなくします。

内部イベントハンドラ

 

OnCreate

「Create」イベントハンドラ

OnDestroy

「Destroy」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnResize

「Resize」イベントハンドラ

OnEnable

「Enable」イベントハンドラ

OnDisable

「Disable」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnActivate

「Activate」イベントハンドラ

OnDeactivate

「Deactivate」イベントハンドラ

OnClick

「Click」イベントハンドラ

OnChange

「Change」イベントハンドラ

マウスイベントハンドラ

 

OnMouseDown

「MouseDown」イベントハンドラ

OnMouseUp

「MouseUp」イベントハンドラ

ドラッグイベントハンドラ

 

OnDragStart

「DragStart」イベントハンドラ

OnDragProcess

「DragProcess」 イベントハンドラ

OnDragEnd

「DragEnd」イベントハンドラ

ドラッグオブジェクト

 

DragObjectCreate

ドラッグオブジェクトを作成します。

DragObjectDestroy

ドラッグオブジェクトを破壊します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

 

CWndObj

CWndObj 標準ライブラリのシンプルコントロールの基本クラスです。

説明

CWndObj クラスはシンプルコントロールの基本メソッドを実装します。

宣言

  class CWndObj : public CWnd

タイトル

  #include <ControlsWndObj.mqh>

継承階層

  CObject

      CWnd

          CWndObj

直接子孫

CBmpButton, CButton, CEdit, CLabel, CPanel, CPicture

クラスメソッド

チャートイベント処理

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

Text

チャートオブジェクトの OBJPROP_TEXT プロパティを取得/設定します。

Color

チャートオブジェクトの OBJPROP_COLOR プロパティを取得/設定します。

ColorBackground

チャートオブジェクトの OBJPROP_BGCOLOR プロパティを取得/設定します。

ColorBorder

チャートオブジェクトの OBJPROP_BORDER_COLORプロパティを取得/設定します。

Font

チャートオブジェクトの OBJPROP_FONT プロパティを取得/設定します。

FontSize

チャートオブジェクトの OBJPROP_FONTSIZE プロパティを取得/設定します。

ZOrder

チャートオブジェクトの OBJPROP_ZORDER プロパティを取得/設定します。

チャートオブジェクトイベントハンドラ

 

OnObjectCreate

CHARTEVENT_OBJECT_CREATE イベントハンドラ

OnObjectChange

CHARTEVENT_OBJECT_CHANGE イベントハンドラ

OnObjectDelete

CHARTEVENT_OBJECT_DELETE イベントハンドラ

OnObjectDrag

CHARTEVENT_OBJECT_DRAG イベントハンドラ

プロパティ変更イベントハンドラ

 

OnSetText

「SetText」イベントハンドラ

OnSetColor

「SetColor」イベントハンドラ

OnSetColorBackground

「SetColorBackground」イベントハンドラ

OnSetFont

「SetFont」イベントハンドラ

OnSetFontSize

「SetFontSize」イベントハンドラ

OnSetZOrder

「SetZOrder」イベントハンドラ

内部イベントハンドラ

 

OnDestroy

「Destroy」イベントハンドラ

OnChange

「Change」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Create, Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

 

CWndContainer

CWndContainer は標準ライブラリの(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CWndContainer クラスは複雑なコントロールの基本メソッドを実装します。

宣言

  class CWndContainer : public CWnd

タイトル

  #include <ControlsWndContainer.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

直接子孫

CCheckBox, CComboBox, CDateDropList, CDatePicker, CDialog, CRadioButton, CScroll, CSpinEdit, CWndClient

クラスメソッド

Destroy

 

Destroy

全てのコンテナコントロールを破壊します。

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

OnMouseEvent

CHARTEVENT_MOUSE_MOVE イベントハンドラ

コンテナへのアクセス

 

ControlsTotal

コンテナのコントロール数を取得します。

Control

コントロールをインデックスで取得します。

ControlFind

コントロールを識別子で取得します。

追加と削除

 

Add

コンテナにコントロールを追加します。

Delete

コンテナからコントロールを削除します。

ジオメトリ

 

Move

コンテナの全てのコントロールに新しい座標を設定します。

Shift

コンテナの全てのコントロール座標の相対的なシフトを行います。

識別

 

Id

コンテナの全てのコントロールに識別子を設定します。

State

 

Enable

コンテナの全てのコントロールを有効にします。

Disable

コンテナの全てのコントロールを無効にします。

Show

コンテナの全てのコントロールを表示します。

Hide

コンテナの全てのコントロールを非表示にします。

マウス操作

 

MouseFocusKill

マウスのフォーカスをなくします。

ファイル操作

 

Save

コンテナ情報をファイルに保存します。

Load

コンテナ情報をファイルから読み込みます。

内部イベントハンドラ

 

OnResize

「Resize」イベントハンドラ

OnActivate

「Activate」イベントハンドラ

OnDeactivate

「Deactivate」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Create, Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

 

CLabel

CLabel は「Text label」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CLabel はシンプルなラベルの作成に意図されています。

宣言

  class CLabel : public CWndObj

タイトル

  #include <ControlsLabel.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CLabel

下記のコ—ドの結果:

ControlsLabel

クラスメソッド

Create

 

Create

コントロールの作成

プロパティ変更イベントハンドラ

 

OnSetText

「SetText」イベントハンドラ

OnSetColor

「SetColor」イベントハンドラ

OnSetFont

「SetFont」イベントハンドラ

OnSetFontSize

「SetFontSize」イベントハンドラ

内部イベントハンドラ

 

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

OnEvent, Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

テキストラベルを使ったパネルの作成例:

//+——————————————————————+
//|                                                ControlsLabel.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CLabel"
#include <ControlsDialog.mqh>
#include <ControlsLabel.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CLabel            m_label;                         // CLabel object
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
protected:
  //— create dependent controls
  bool              CreateLabel(void);
  //— handlers of the dependent controls events
  void              OnClickLabel(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
 
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateLabel())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "CLabel"                                              |
//+——————————————————————+
bool CControlsDialog::CreateLabel(void)
 {
//— coordinates
  int x1=INDENT_RIGHT;
  int y1=INDENT_TOP+CONTROLS_GAP_Y;
  int x2=x1+100;
  int y2=y1+20;
//— create
  if(!m_label.Create(m_chart_id,m_name+"Label",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_label.Text("Label"))
    return(false);
  if(!Add(m_label))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//—
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CBmpButton

CBmpButton は「Bitmap Label(ビットマップラベル)」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CBmpButton は、グラフィックイメージのボタン作成に意図されています。

宣言

  class CBmpButton : public CWndObj

タイトル

  #include <ControlsBmpButton.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CBmpButton

下記のコ—ドの結果:

ControlsBmpButton

クラスメソッド

Create

 

Create

コントロールの作成

プロパティ

 

Border

コントロールの「Border」プロパティを取得/設定します。

BmpNames

コントロールの bmp ファイルの名称を設定します。

BmpOffName

OFF 状態での bmp ファイルの名称を取得/設定します。

BmpOnName

ON 状態での bmp ファイルの名称を取得/設定します。

BmpPassiveName

パッシブ状態での bmp ファイルの名称を取得/設定します。

BmpActiveName

アクティブ状態での bmp ファイルの名称を取得/設定します。

State

 

Pressed

コントロールの状態を取得/設定します。

Locking

コントロールの「Locking」プロパティを取得/設定します。

内部イベントハンドラ

 

OnSetZOrder

「SetZOrder」イベントハンドラ

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnChange

「Change」イベントハンドラ

OnActivate

「Activate」イベントハンドラ

OnDeactivate

「Deactivate」イベントハンドラ

OnMouseDown

「MouseDown」イベントハンドラ

OnMouseUp

「MouseUp」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

OnEvent, Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

ビットマップラベルを使ったパネルの作成例:

//+——————————————————————+
//|                                            ControlsBmpButton.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CBmpButton"
#include <ControlsDialog.mqh>
#include <ControlsBmpButton.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CBmpButton        m_bmpbutton1;                   // CBmpButton object
  CBmpButton        m_bmpbutton2;                   // CBmpButton object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateBmpButton1(void);
  bool              CreateBmpButton2(void);
  //— handlers of the dependent controls events
  void              OnClickBmpButton1(void);
  void              OnClickBmpButton2(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CLICK,m_bmpbutton1,OnClickBmpButton1)
ON_EVENT(ON_CLICK,m_bmpbutton2,OnClickBmpButton2)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateBmpButton1())
    return(false);
  if(!CreateBmpButton2())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "BmpButton1" button                                   |
//+——————————————————————+
bool CControlsDialog::CreateBmpButton1(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+BUTTON_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_bmpbutton1.Create(m_chart_id,m_name+"BmpButton1",m_subwin,x1,y1,x2,y2))
    return(false);
//— sets the name of bmp files of the control CBmpButton
  m_bmpbutton1.BmpNames("\Images\euro.bmp","\Images\dollar.bmp");
  if(!Add(m_bmpbutton1))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "BmpButton2" fixed button                             |
//+——————————————————————+
bool CControlsDialog::CreateBmpButton2(void)
 {
//— coordinates
  int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+BUTTON_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_bmpbutton2.Create(m_chart_id,m_name+"BmpButton2",m_subwin,x1,y1,x2,y2))
    return(false);
//— sets the name of bmp files of the control CBmpButton
  m_bmpbutton2.BmpNames("\Images\euro.bmp","\Images\dollar.bmp");
  if(!Add(m_bmpbutton2))
&nbsnbsp;   return(false);
  m_bmpbutton2.Locking(true);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickBmpButton1(void)
 {
  Comment(__FUNCTION__);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickBmpButton2(void)
 {
  if(m_bmpbutton2.Pressed())
    Comment(__FUNCTION__+" State of the control is: On");
  else
    Comment(__FUNCTION__+" State of the control is: Off");
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//—
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CButton

CButton は「Button」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CButton はシンプルなボタンの作成に意図されています。

宣言

  class CButton : public CWndObj

タイトル

  #include <ControlsButton.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CButton

下記のコ—ドの結果:

ControlsButton

クラスメソッド

Create

 

Create

コントロールの作成

State

 

Pressed

「Pressed」プロパティを取得/設定します。

Locking

「Locking」プロパティを取得/設定します。

プロパティ変更イベントハンドラ

 

OnSetText

「SetText」イベントハンドラ

OnSetColor

「SetColor」イベントハンドラ

OnSetColorBackground

「SetColorBackground」イベントハンドラ

OnSetColorBorder

「SetColorBorder」イベントハンドラ

OnSetFont

「SetFont」イベントハンドラ

OnSetFontSize

「SetFontSize」イベントハンドラ

内部イベントハンドラ

 

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnResize

「Resize」イベントハンドラ

OnMouseDown

「MouseDown」イベントハンドラ

OnOnMouseUp

「MouseUp」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

OnEvent, Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

ボタンを使ったパネルの作成例:

//+——————————————————————+
//|                                               ControlsButton.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CButton"
#include <ControlsDialog.mqh>
#include <ControlsButton.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CButton           m_button1;                       // the button object
  CButton           m_button2;                       // the button object
  CButton           m_button3;                       // the fixed button object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateButton1(void);
  bool              CreateButton2(void);
  bool              CreateButton3(void);
  //— handlers of the dependent controls events
  void              OnClickButton1(void);
  void              OnClickButton2(void);
  void              OnClickButton3(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CLICK,m_button1,OnClickButton1)
ON_EVENT(ON_CLICK,m_button2,OnClickButton2)
ON_EVENT(ON_CLICK,m_button3,OnClickButton3)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateButton1())
    return(false);
  if(!CreateButton2())
    return(false);
  if(!CreateButton3())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "Button1" button                                      |
//+——————————————————————+
bool CControlsDialog::CreateButton1(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+BUTTON_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_button1.Text("Button1"))
    return(false);
  if(!Add(m_button1))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "Button2" button                                      |
//+——————————————————————+
bool CControlsDialog::CreateButton2(void)
 {
//— coordinates
  int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X);
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+BUTTON_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_button2.Text("Button2"))
    return(false);
  if(!Add(m_button2))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "Button3" fixed button                                |
//+——————————————————————+
bool CControlsDialog::CreateButton3(void)
 {
//— coordinates
  int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+BUTTON_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_button3.Text("Locked"))
    return(false);
  if(!Add(m_button3))
    return(false);
  m_button3.Locking(true);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickButton1(void)
 {
  Comment(__FUNCTION__);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickButton2(void)
 {
  Comment(__FUNCTION__);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickButton3(void)
 {
  if(m_button3.Pressed())
    Comment(__FUNCTION__+" State of the control: On");
  else
    Comment(__FUNCTION__+" State of the control: Off");
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CEdit

CEdit は「Edit」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CEdit クラスは、ユーザのテキスト入力を可能にするコントロールの作成に意図されています。

宣言

  class CEdit : public CWndObj

タイトル

  #include <ControlsEdit.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CEdit

下記のコ—ドの結果:

ControlsEdit

クラスメソッド

Create

 

Create

コントロールの作成

プロパティ

 

ReadOnly

「ReadOnly」プロパティを取得/設定します。

TextAlign

「TextAlign」プロパティを取得/設定します。

チャートオブジェクトイベントハンドラ

 

OnObjectEndEdit

CHARTEVENT_OBJECT_ENDEDIT イベントハンドラ(仮想)

プロパティ変更イベントハンドラ

 

OnSetText

「SetText」イベントハンドラ

OnSetColor

「SetColor」イベントハンドラ

OnSetColorBackground

「SetColorBackground」イベントハンドラ

OnSetColorBorder

「SetColorBorder」イベントハンドラ

OnSetFont

「SetFont」イベントハンドラ

OnSetFontSize

「SetFontSize」イベントハンドラ

OnSetZOrder

「SetZOrder」イベントハンドラ

内部イベントハンドラ

 

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnResize

「Resize」イベントハンドラ

OnChange

「Change」イベントハンドラ

OnClick

「Click」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

エディットを使ったパネルの作成例:

//+——————————————————————+
//|                                                 ControlsEdit.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CEdit"
#include <ControlsDialog.mqh>
#include <ControlsEdit.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CEdit             m_edit;                         // CEdit object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
 
protected:
  //— create dependent controls
  bool              CreateEdit(void);
 };
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateEdit())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the display field                                         |
//+——————————————————————+
bool CControlsDialog::CreateEdit(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP;
  int x2=ClientAreaWidth()-INDENT_RIGHT;
  int y2=y1+EDIT_HEIGHT;
//— create
  if(!m_edit.Create(m_chart_id,m_name+"Edit",m_subwin,x1,y1,x2,y2))
    return(false);
//— allow editing the content
  if(!m_edit.ReadOnly(false))
    return(false);
  if(!Add(m_edit))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CPanel

CPanel は「Rectangle label」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CPanel クラスは、グループ内のいろいろなの関数の制御を組み合わせることを意図しています。

宣言

  class CPanel : public CWndObj

タイトル

  #include <ControlsPanel.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CPanel

下記のコ—ドの結果:

ControlsPanel

クラスメソッド

Create

 

Create

コントロールの作成

チャートオブジェクトプロパティ

 

BorderType

チャートオブジェクトの「BorderType」プロパティを取得します。

チャートオブジェクトイベントハンドラ

 

OnSetText

「SetText」イベントハンドラ

OnSetColorBackground

「SetColorBackground」イベントハンドラ

OnSetColorBorder

「SetColorBorder」イベントハンドラ

内部イベントハンドラ

 

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnResize

「Resize」イベントハンドラ

OnChange

「Change」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

OnEvent, Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

四角形ラベルを使ったパネルの作成例:

//+——————————————————————+
//|                                                ControlsPanel.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CPanel"
#include <ControlsDialog.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
 
protected:
  //— create dependent controls
  bool              CreatePanel(void);
 };
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreatePanel())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "CPanel"                                              |
//+——————————————————————+
bool CControlsDialog::CreatePanel(void)
 {
//— coordinates
  int x1=20;
  int y1=20;
  int x2=ExtDialog.Width()/3;
  int y2=ExtDialog.Height()/3;
//— create
  if(!my_white_border.Create(0,ExtDialog.Name()+"MyWhiteBorder",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!my_white_border.ColorBackground(CONTROLS_DIALOG_COLOR_BG))
    return(false);
  if(!my_white_border.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT))
    return(false);
  if(!ExtDialog.Add(my_white_border))
    return(false);
  my_white_border.Alignment(WND_ALIGN_CLIENT,0,0,0,0);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//—
CPanel   my_white_border;       // object CPanel
bool     pause=true;             // true – pause
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//—
  EventSetTimer(3);
  pause=true;
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }
//+——————————————————————+
//|  Timer                                                           |
//+——————————————————————+
void OnTimer()
 {
  pause=!pause;
 }

CPicture

CPicture は「Bitmap Label(ビットマップラベル)」チャートオブジェクトに基づいたシンプルコントロールのクラスです。

説明

CPicture クラスは、シンプルなグラフィックイメージの作成に意図されています。

宣言

  class CPicture : public CWndObj

タイトル

  #include <ControlsPicture.mqh>

継承階層

  CObject

      CWnd

          CWndObj

              CPicture

下記のコ—ドの結果:

ControlsPicture

クラスメソッド

Create

 

Create

コントロールの作成

チャートオブジェクトプロパティ

 

Border

チャートオブジェクトの幅を取得/設定します。

BmpName

コントロールの bmp ファイルの名称を取得/設定します。

内部イベント

 

OnCreate

「Create」イベントハンドラ

OnShow

「Show」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnMove

「Move」イベントハンドラ

OnChange

「Change」イベントハンドラ

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

クラスから継承されたメソッド CWnd

Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndObj

OnEvent, Text, Text, Color, Color, ColorBackground, ColorBackground, ColorBorder, ColorBorder, Font, Font, FontSize, FontSize, ZOrder, ZOrder

ビットマップラベルを使ったパネルの作成例:

//+——————————————————————+
//|                                              ControlsPicture.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CPicture"
#include <ControlsDialog.mqh>
#include <ControlsPicture.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CPicture          m_picture;                       // CPicture object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreatePicture(void);
  //— handlers of the dependent controls events
  void              OnClickPicture(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CLICK,m_picture,OnClickPicture)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreatePicture())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "Picture"      nbsp;                                       |
//+——————————————————————+
bool CControlsDialog::CreatePicture(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+32;
  int y2=y1+32;
//— create
  if(!m_picture.Create(m_chart_id,m_name+"Picture",m_subwin,x1,y1,x2,y2))
    return(false);
//— set the name of bmp files to display the CPicture control
  m_picture.BmpName("\Images\euro.bmp");
 
  if(!Add(m_picture))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnClickPicture(void)
 {
  Comment(__FUNCTION__);
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CScroll

CScroll はスクロールバーの基本クラスです。

説明

CScroll は(依存コントロールを含む)複雑なコントロールで、スクロールバー作成の基本的な機能を含みます。基本クラスはそれ自体のコントロールとしては使用されず、2 つの派生クラス(CScrollV 及び CScrollH クラス)がコントロールとして使用されます。

宣言

  class CScroll : public CWndContainer

タイトル

  #include <ControlsScrolls.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CScroll

直接子孫

CScrollH, CScrollV

クラスメソッド

Create

 

Create

コントロールの作成

チャートオブジェクトイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

MinPos

最小位置を取得/設定します。

MaxPos

最大位置を取得/設定します。

CurrPos

現在位置を取得/設定します。

依存コントロールの作成

 

CreateBack

背景ボタンを作成します。

CreateInc

スクロールバーのインクリメントボタンを作成します。

CreateDec

スクロールバーのデクリメントボタンを作成します。

CreateThumb

スクロールバーの(ドラッグ可能な)サムボタンを作成します。

依存コントロールのイベントハンドラ

 

OnClickInc

インクリメントボタンイベント処理に使用されるイベントハンドラ

OnClickDec

デクリメントボタンイベント処理に使用されるイベントハンドラ

内部イベントハンドラ

 

OnShow

「Create」イベントハンドラ

OnHide

「Hide」イベントハンドラ

OnChangePos

「ChangePosition」イベントハンドラ

オブジェクトドラッグハンドラ

 

OnThumbDragStart

「ThumbDragStart」イベントハンドラ

OnThumbDragProcess

「ThumbDragProcess」イベントハンドラ

OnThumbDragEnd

「ThumbDragEnd」イベントハンドラ

位置

 

CalcPos

スクロールバーの位置を座標で取得します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide, Save, Load

 

CScrollV

CScrollV は「Vertical scroll bar」の複雑なコントロールのクラスです。

説明

CScrollV クラスは垂直方向のスクロールバーの作成に意図されています。

宣言

  class CScrollV : public CScroll

タイトル

  #include <ControlsScrolls.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CScroll

                  CScrollV

下記のコ—ドの結果:

ControlsScrollV

クラスメソッド

依存コントロール

 

CreateInc

スクロールバーのインクレメントボタンを作成します。

CreateDec

スクロールバーのデクレメントボタンを作成します。

CreateThumb

スクロールバーの(ドラッグ可能な)サムボタンを作成します。

内部イベントハンドラ

 

OnResize

「Resize」イベントハンドラ

OnChangePos

「ChangePosition」イベントハンドラ

ドラッグイベントハンドラ

 

OnThumbDragStart

「ThumbDragStart」イベントハンドラ

OnThumbDragProcess

「ThumbDragProcess」イベントハンドラ

OnThumbDragEnd

「ThumbDragEnd」イベントハンドラ

位置

 

CalcPos

スクロールバーの位置を座標で取得します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide, Save, Load

クラスから継承されたメソッド CScroll

Create, OnEvent, MinPos, MinPos, MaxPos, MaxPos, CurrPos, CurrPos

縦方向のスクロールバーを使ったパネルの作成例:

//+——————————————————————+
//|                                              ControlsScrollV.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CScrollV"
#include <ControlsDialog.mqh>
#include <ControlsScrolls.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CScrollV          m_scroll_v;                     // CScrollV object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateScrollV(void);
  //— handlers of the dependent controls events
  void              OnScrollInc(void);
  void              OnScrollDec(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_SCROLL_INC,m_scroll_v,OnScrollInc)
ON_EVENT(ON_SCROLL_DEC,m_scroll_v,OnScrollDec)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateScrollV())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the CScrollsV object                                      |
//+——————————————————————+
bool CControlsDialog::CreateScrollV(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP;
  int x2=x1+18;
  int y2=y1+LIST_HEIGHT;
//— create
  if(!m_scroll_v.Create(m_chart_id,m_name+"ScrollV",m_subwin,x1,y1,x2,y2))
    return(false);
//— set up the scrollbar
  m_scroll_v.MinPos(0);
//— set up the scrollbar
  m_scroll_v.MaxPos(10);
  if(!Add(m_scroll_v))
    return(false);
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnScrollInc(void)
 {
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnScrollDec(void)
 {
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CScrollH

CScrollH は 「Horizontal scroll bar」の複雑なコントロールのクラスです。

説明

CScrollH クラスは水平方向のスクロールバーの作成に意図されています。

宣言

  class CScrollH : public CScroll

タイトル

  #include <ControlsScrolls.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CScroll

                  CScrollH

下記のコ—ドの結果:

ControlsScrollH

クラスメソッド

依存コントロール

 

CreateInc

スクロールバーのインクレメントボタンを作成します。

CreateDec

スクロールバーのデクレメントボタンを作成します。

CreateThumb

スクロールバーの(ドラッグ可能な)サムボタンを作成します。

内部イベントハンドラ

 

OnResize

「Resize」イベントハンドラ

OnChangePos

「ChangePosition」イベントハンドラ

ドラッグイベントハンドラ

 

OnThumbDragStart

「ThumbDragStart」イベントハンドラ

OnThumbDragProcess

「ThumbDragProcess」イベントハンドラ

OnThumbDragEnd

「ThumbDragEnd」イベントハンドラ

位置

 

CalcPos

スクロールバーの位置を座標で取得します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide, Save, Load

クラスから継承されたメソッド CScroll

Create, OnEvent, MinPos, MinPos, MaxPos, MaxPos, CurrPos, CurrPos

鉾方向のスクロールバーを使ったパネルの作成例:

//+——————————————————————+
//|                                              ControlsScrollH.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CScrollH"
#include <ControlsDialog.mqh>
#include <ControlsScrolls.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CScrollH          m_scroll_v;                     // CScrollH object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateScrollsH(void);
  //— handlers of the dependent controls events
  void              OnScrollInc(void);
  void              OnScrollDec(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_SCROLL_INC,m_scroll_v,OnScrollInc)
ON_EVENT(ON_SCROLL_DEC,m_scroll_v,OnScrollDec)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateScrollsH())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the CScrollsH object                                      |
//+——————————————————————+
bool CControlsDialog::CreateScrollsH(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP;
  int x2=x1+3*BUTTON_WIDTH;
  int y2=y1+18;
//— create
  if(!m_scroll_v.Create(m_chart_id,m_name+"ScrollsH",m_subwin,x1,y1,x2,y2))
    return(false);
//— set up the scrollbar
  m_scroll_v.MinPos(0);
//— set up the scrollbar
  m_scroll_v.MaxPos(10);
  if(!Add(m_scroll_v))
    return(false);
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnScrollInc(void)
 {
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnScrollDec(void)
 {
  Comment("Position of the scrollbar ",m_scroll_v.CurrPos());
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CWndClient

CWndClient は 「Cient area」の(依存コントロールを含む)複雑なコントロールのクラスです。これは、スクロールバー領域作成の基本クラスです。

説明

CWndClient はスクロールバー付きのクライアント領域の作成を実装します。

宣言

  class CWndClient : public CWndContainer

タイトル

  #include <ControlsWndClient.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CWndClient

直接子孫

CCheckGroup, CListView, CRadioGroup

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

ColorBackground

背景色を設定します。

ColorBorder

境界色を設定します。

BorderType

境界線の種類を設定します。

設定

 

VScrolled

垂直方向のスクロールバーの使用を示すフラグを取得/設定します。

HScrolled

水平方向のスクロールバーの使用を示すフラグを取得/設定します。

依存コントロール

 

CreateBack

スクロールバーの背景を作成します。

CreateScrollV

垂直方向のスクロールバーを作成します。

CreateScrollH

水平方向のスクロールバーを作成します。

内部イベントハンドラ

 

OnResize

「Resize」イベントハンドラ

依存コントロールのイベントハンドラ

 

OnVScrollShow

VScroll 依存コントロールの「Show」イベントハンドラ(仮想)

OnVScrollHide

VScroll 依存コントロールの「Hide」イベントハンドラ(仮想)

OnHScrollShow

HScroll 依存コントロールの「Show」イベントハンドラ(仮想)

OnHScrollHide

HScroll 依存コントロールの「Hide」イベントハンドラ(仮想)

OnScrollLineDown

VScroll 依存コントロールの「ScrollLineDown」イベントハンドラ(仮想)

OnScrollLineUp

VScroll 依存コントロールの「ScrollLineUp」イベントハンドラ(仮想)

OnScrollLineLeft

HScroll 依存コントロールの「ScrollLineLeft」イベントハンドラ(仮想)

OnScrollLineRight

HScroll 依存コントロールの「ScrollLineRight」イベントハンドラ(仮想)

Resize

 

Rebound

CRect クラスの座標を使用してコントロールの新しい座標を設定します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Enable, Disable, Hide, Save, Load

 

CListView

CListView は ListView の(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CListView クラスはリストコントロールの機能をカプセル化します。

宣言

  class CListView : public CWndClient

タイトル

  #include <ControlsListView.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CWndClient

                  CListView

下記のコ—ドの結果:

ControlsListView

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

設定

 

TotalView

コントロールに表示される項目の数の設定

追加と削除

 

AddItem

項目の追加

Data

 

Select

現在のリスト要素をインデックスで選択します。

SelectByText

現在のリスト要素をインデックスで選択します。

SelectByValue

現在のリスト要素を値で選択します。

読み込み専用のデータ

 

Gets the value of current list element

依存コントロール

 

CreateRow

ListView の列を作成します。

内部イベントハンドラ

 

OnResize

「Resize」イベントハンドラ(仮想)

依存コントロールのイベントハンドラ

 

OnVScrollShow

VScroll 依存コントロールの「Show」イベントハンドラ(仮想)

OnVScrollHide

VScroll 依存コントロールの「Hide」イベントハンドラ(仮想)

OnScrollLineDown

VScroll 依存コントロールの「ScrollLineDown」イベントハンドラ(仮想)

OnScrollLineUp

VScroll 依存コントロールの「ScrollLineUp」イベントハンドラ(仮想)

OnItemClick

「ItemClick」イベントハンドラ(仮想)

Redraw

 

Redraw

コントロールを再描画します。

RowState

指定された行の状態を設定します。

CheckView

指定された行の「visibility」をチェックします。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Enable, Disable, Hide, Save, Load

クラスから継承されたメソッド CWndClient

ColorBackground, ColorBorder, BorderType, VScrolled, VScrolled, HScrolled, HScrolled, Id

リストビューを使ったパネルの作成例:

//+——————————————————————+
//|                                             ControlsListView.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CListView"
#include <ControlsDialog.mqh>
#include <ControlsListView.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CListView         m_list_view;                     // CListView object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateListView(void);
  //— handlers of the dependent controls events
  void              OnChangeListView(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_list_view,OnChangeListView)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateListView())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "ListView" element                                    |
//+——————————————————————+
bool CControlsDialog::CreateListView(void)
 {
//— coordinates
  int x1=INDENT_LEFT+GROUP_WIDTH+2*CONTROLS_GAP_X;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+2*CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+LIST_HEIGHT-CONTROLS_GAP_Y;
//— create
  if(!m_list_view.Create(m_chart_id,m_name+"ListView",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!Add(m_list_view))
    return(false);
//— fill out with strings
  for(int i=0;i<16;i++)
    if(!m_list_view.AddItem("Item "+IntegerToString(i)))
        return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeListView(void)
 {
  Comment(__FUNCTION__+" ""+m_list_view.Select()+""");
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CComboBox

CComboBox は ComboBox の(依存コントロールを含む)複雑なコントロールのクラスです。

説明

ComboBox は、選択のために意図されたスタティックコントロールと組み合わせたリストボックスで構成されています。コントロールのリストボックス部分は、ユーザがコントロールの隣にあるドロップダウン矢印を選択した際にドロップダウンすることが出来ます。

宣言

  class CComboBox : public CWndContainer

タイトル

  #include <ControlsComboBox.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CComboBox

下記のコ—ドの結果:

ControlsComboBox

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

Add

 

AddItem

項目の追加

設定

 

ListViewItems

コントロールに表示される項目の数の設定

Data

 

Select

現在のリスト要素をインデックスで選択します。

SelectByText

現在のリスト要素をインデックスで選択します。

SelectByValue

現在のリスト要素を値で選択します。

読み込み専用のデータ

 

現在のリスト要素の値を取得します。

依存コントロール

 

CreateEdit

依存コントロール(編集)を作成します。

CreateButton

依存コントロール(ボタン)を作成します。

CreateList

依存コントロール(リストビュー)を作成します。

依存コントロールのイベントハンドラ

 

OnClickEdit

「ClickEdit」イベントハンドラ(仮想)

OnClickButton

「ClickButton」イベントハンドラ(仮想)

OnChangeList

「ChangeList」イベントハンドラ(仮想)

Show/Hide

 

ListShow

項目リストの表示

ListHide

項目リストの非表示

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Hide

コンボボックスを使ったパネルの作成例:

//+——————————————————————+
//|                                             ControlsComboBox.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CComboBox"
#include <ControlsDialog.mqh>
#include <ControlsComboBox.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CComboBox         m_combo_box;;                   // CComboBox object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateComboBox(void);
  //— handlers of the dependent controls events
  void              OnChangeComboBox(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_combo_box,OnChangeComboBox)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateComboBox())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "ComboBox" element                                    |
//+——————————————————————+
bool CControlsDialog::CreateComboBox(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+EDIT_HEIGHT;
//— create
  if(!m_combo_box.Create(m_chart_id,m_name+"ComboBox",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!Add(m_combo_box))
    return(false);
//— fill out with strings
  for(int i=0;i<16;i++)
    if(!m_combo_box.ItemAdd("Item "+IntegerToString(i)))
        return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeComboBox(void)
 {
  Comment(__FUNCTION__+" ""+m_combo_box.Select()+""");
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//—
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CCheckBox

CCheckBox は CheckBox の複雑なコントロールのクラスです。

説明

CCheckBox コントロールは、ユーザが true または false の条件を選択することを可能にするチェックボックスが表示します。

宣言

  class CCheckBox : public CWndContainer

タイトル

  #include <ControlsCheckBox.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CCheckBox

下記のコ—ドの結果:

ControlsCheckBox

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

Text

コントロールに関連付けられたラベルを取得/設定します。

Color

コントロールに関連付けられたラベルの色を取得/設定します。

State

 

Checked

コントロールがチェックされているかどうかを示す値を取得/設定します。

Data

 

コントロールに関連付けられた値を取得/設定します。

依存コントロール

 

CreateButton

依存コントロール(ボタン)を作成します。

CreateLabel

依存コントロール(ラベル)を作成します。

依存コントロールのイベントハンドラ

 

ClickButton

「ClickButton」イベントハンドラ(仮想)

ClickLabel

「ClickLabe」イベントハンドラ(仮想)

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide

Example of creating a panel with Checkbox control:

//+——————————————————————+
//|                                             ControlsCheckBox.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CCheckBox"
#include <ControlsDialog.mqh>
#include <ControlsCheckBox.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CCheckBox         m_check_box1;                   // CCheckBox object
  CCheckBox         m_check_box2;                   // CCheckBox object
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
protected:
  //— create dependent controls
  bool              CreateCheckBox1(void);
  bool              CreateCheckBox2(void);
  //— handlers of the dependent controls events
  void              OnChangeCheckBox1(void);
  void              OnChangeCheckBox2(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_check_box1,OnChangeCheckBox1)
ON_EVENT(ON_CHANGE,m_check_box2,OnChangeCheckBox2)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateCheckBox1())
    return(false);
  if(!CreateCheckBox2())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "CheckBox" element                                    |
//+——————————————————————+
bool CControlsDialog::CreateCheckBox1(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (RADIO_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_check_box1.Create(m_chart_id,m_name+"CheckBox1",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_check_box1.Text("CheckBox1"))
    return(false);
  if(!m_check_box1.Color(clrBlue))
    return(false);
  if(!Add(m_check_box1))
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "CheckBox" element                                    |
//+——————————————————————+
bool CControlsDialog::CreateCheckBox2(void)
 {
//— coordinates
  int x1=INDENT_LEFT+GROUP_WIDTH+CONTROLS_GAP_X;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (RADIO_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+BUTTON_HEIGHT;
//— create
  if(!m_check_box2.Create(m_chart_id,m_name+"CheckBox2",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!m_check_box2.Text("CheckBox2"))
    return(false);
  if(!m_check_box2.Color(clrBlue))
    return(false);
  if(!Add(m_check_box2))
    return(false);
  m_check_box2.Checked(true);
  Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box2.Checked()));
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeCheckBox1(void)
 {
  Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box1.Checked()));
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeCheckBox2(void)
 {
  Comment(__FUNCTION__+" : Checked="+IntegerToString(m_check_box2.Checked()));
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//—
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

 

CCheckGroup

CCheckGroup は CheckGroup の(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CCheckGroup はフラグの表示及び編集を可能にするコントロールを作成する可能性を提供します。

宣言

  class CCheckGroup : public CWndClient

タイトル

  #include <ControlsCheckGroup.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CWndClient

                  CCheckGroup

下記のコ—ドの結果:

ControlsCheckGroup

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

Add

 

AddItem

新しい項目の追加

読み込み専用のデータ

 

コントロールに関連付けられた値を取得します。

依存コントロール

 

CreateButton

新しい CCheckBox 項目の作成

依存コントロールのイベントハンドラ

 

OnVScrollShow

VScroll 依存コントロールの「Show」イベントハンドラ(仮想)

OnVScrollHide

VScroll 依存コントロールの「Hide」イベントハンドラ(仮想)

OnScrollLineDown

VScroll 依存コントロールの「ScrollLineUp」イベントハンドラ(仮想)

OnScrollLineUp

VScroll 依存コントロールの「ScrollLineDown」イベントハンドラ(仮想)

OnChangeItem

VScroll 依存コントロールの「ChangeItem」イベントハンドラ(仮想)

Redraw

 

Redraw

グループの再描画

RowState

指定された項目の状態の設定

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Enable, Disable, Hide

クラスから継承されたメソッド CWndClient

ColorBackground, ColorBorder, BorderType, VScrolled, VScrolled, HScrolled, HScrolled, Id

チェックボックスグループを使ったパネルの作成例:

//+——————————————————————+
//|                                           ControlsCheckGroup.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CCheckGroup"
#include <ControlsDialog.mqh>
#include <ControlsCheckGroup.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CCheckGroup       m_check_group;                   // CCheckGroup object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateCheckGroup(void);
  //— handlers of the dependent controls events
  void              OnChangeCheckGroup(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_check_group,OnChangeCheckGroup)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateCheckGroup())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "CheckGroup" element                                  |
//+——————————————————————+
bool CControlsDialog::CreateCheckGroup(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (RADIO_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+CHECK_HEIGHT;
//— create
  if(!m_check_group.Create(m_chart_id,m_name+"CheckGroup",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!Add(m_check_group))
    return(false);
//— fill out with strings
  for(int i=0;i<5;i++)
    if(!m_check_group.AddItem("Item "+IntegerToString(i),1<<i))
        return(false);
  m_check_group.Check(0,1<<0);
  m_check_group.Check(2,1<<2);
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_check_group.Value()));
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeCheckGroup(void)
 {
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_check_group.Value()));
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(ChartID(),"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//—
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CRadioButton

CRadioButton は RadioButton の複雑なコントロールのクラスです。

説明

CRadioButton 自体は使用されず CRadioGroup 項目の作成に使用されています。

宣言

  class CRadioButton : public CWndContainer

タイトル

  #include <ControlsRadioButton.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CRadioButton

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

Text

コントロールに関連付けられたラベルを取得/設定します。

Color

コントロールに関連付けられたラベルの色を取得/設定します。

State

 

State

状態を取得/設定します。

依存コントロール

 

CreateButton

ボタンを作成します。

CreateLabel

ラベルを作成します。

依存コントロールのイベントハンドラ

 

OnClickButton

「ClickButton」イベントハンドラ(仮想)

OnClickLabel

「ClickLabe」イベントハンドラ(仮想)

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide, Save, Load

 

CRadioGroup

CRadioGroup は RadioGroup の(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CRadioGroup は他の CRadioButton コントロールと組み合わされて、選択グループからの 1 つのオプションの選択を可能にします。

宣言

  class CRadioGroup : public CWndClient

タイトル

  #include <ControlsRadioGroup.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CWndClient

                  CRadioGroup

下記のコ—ドの結果:

ControlsRadioGroup

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

Add

 

AddItem

新しい項目の追加

読み込み専用のデータ

 

コントロールに関連付けられた値を取得します。

依存コントロール

 

CreateButton

新しい CRadioButton 項目を作成します。

依存コントロールのイベントハンドラ

 

OnVScrollShow

VScroll 依存コントロールの「Show」イベントハンドラ(仮想)

OnVScrollHide

VScroll 依存コントロールの「Hide」イベントハンドラ(仮想)

OnScrollLineDown

VScroll 依存コントロールの「ScrollLineDown」イベントハンドラ(仮想)

OnScrollLineUp

VScroll 依存コントロールの「ScrollLineUp」イベントハンドラ(仮想)

OnChangeItem

「ChangeItem」イベントハンドラ(仮想)

Redraw

 

Redraw

グループ項目の再描画

RowState

指定された項目の状態の設定

Select

現在の項目を選択します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Enable, Disable, Hide

クラスから継承されたメソッド CWndClient

ColorBackground, ColorBorder, BorderType, VScrolled, VScrolled, HScrolled, HScrolled, Id

ラジオボタングループを使ったパネルの作成例:

//+——————————————————————+
//|                                           ControlsRadioGroup.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CRadioGroup"
#include <ControlsDialog.mqh>
#include <ControlsRadioGroup.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CRadioGroup       m_radio_group;                   // CRadioGroup object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateRadioGroup(void);
  //— handlers of the dependent controls events
  void              OnChangeRadioGroup(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CHANGE,m_radio_group,OnChangeRadioGroup)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateRadioGroup())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "RadioGroup" element                                  |
//+——————————————————————+
bool CControlsDialog::CreateRadioGroup(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y)+
         (EDIT_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+RADIO_HEIGHT;
//— create
  if(!m_radio_group.Create(m_chart_id,m_name+"RadioGroup",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!Add(m_radio_group))
    return(false);
//— fill out with strings
  for(int i=0;i<3;i++)
    if(!m_radio_group.AddItem("Item "+IntegerToString(i),1<<i))
        return(false);
  m_radio_group.Value(1<<2);
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_radio_group.Value()));
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeRadioGroup(void)
 {
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_radio_group.Value()));
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CSpinEdit

CSpinEdit は SpinEdit の(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CSpinEdit クラスは、整数型の値の編集を可能にするコントロールの作成に意図されています。データは、上ボタンを押すと自動に増加、下ボタンを押すと自動的減少します。

宣言

  class CSpinEdit : public CWndContainer

タイトル

  #include <ControlsSpinEdit.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CSpinEdit

下記のコ—ドの結果:

ControlsSpinEdit

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

MinValue

最小の許容値を取得/設定します。

MaxValue

最大の許容値を取得/設定します。

State

 

現在の値を取得/設定します。

依存コントロール

 

CreateEdit

依存コントロール(編集)を作成します。

CreateInc

依存コントロール(インクレメントボタン)を作成します。

CreateDec

依存コントロール(デクレメントボタン)を作成します。

依存コントロールのイベントハンドラ

 

OnClickInc

「ClickInc」イベントハンドラ(仮想)

OnClickDec

「ClickDec」イベントハンドラ(仮想)

内部イベントハンドラ

 

OnChangeValue

「ChangeValue」イベントハンドラ(仮想)

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide

SpinEditコントロールを使ったパネルの作成例:

//+——————————————————————+
//|                                             ControlsSpinEdit.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+——————————————————————+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link     "https://www.mql5.com"
#property version   "1.00"
#property description "Control Panels and Dialogs. Demonstration class CSpinEdit"
#include <ControlsDialog.mqh>
#include <ControlsSpinEdit.mqh>
//+——————————————————————+
//| defines                                                          |
//+——————————————————————+
//— indents and gaps
#define INDENT_LEFT                         (11)     // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)     // indent from top (with allowance for border width)
#define INDENT_RIGHT                        (11)     // indent from right (with allowance for border width)
#define INDENT_BOTTOM                       (11)     // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//— for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)     // size by Y coordinate
//— for the indication area
#define EDIT_HEIGHT                         (20)     // size by Y coordinate
//— for group controls
#define GROUP_WIDTH                         (150)     // size by X coordinate
#define LIST_HEIGHT                         (179)     // size by Y coordinate
#define RADIO_HEIGHT                        (56)     // size by Y coordinate
#define CHECK_HEIGHT                        (93)     // size by Y coordinate
//+——————————————————————+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+——————————————————————+
class CControlsDialog : public CAppDialog
 {
private:
  CSpinEdit         m_spin_edit;                     // CSpinEdit object
 
public:
                    CControlsDialog(void);
                   ~CControlsDialog(void);
  //— create
  virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
  //— chart event handler
  virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
 
protected:
  //— create dependent controls
  bool              CreateSpinEdit(void);
  //— handlers of the dependent controls events
  void              OnChangeSpinEdit(void);
 };
//+——————————————————————+
//| Event Handling                                                   |
//+——————————————————————+
EVENT_MAP_BEGIN(CControlsDialog)
  ON_EVENT(ON_CHANGE,m_spin_edit,OnChangeSpinEdit)
EVENT_MAP_END(CAppDialog)
//+——————————————————————+
//| Constructor                                                      |
//+——————————————————————+
CControlsDialog::CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Destructor                                                       |
//+——————————————————————+
CControlsDialog::~CControlsDialog(void)
 {
 }
//+——————————————————————+
//| Create                                                           |
//+——————————————————————+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
 {
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
    return(false);
//— create dependent controls
  if(!CreateSpinEdit())
    return(false);
//— succeed
  return(true);
 }
//+——————————————————————+
//| Create the "SpinEdit" element                                    |
//+——————————————————————+
bool CControlsDialog::CreateSpinEdit(void)
 {
//— coordinates
  int x1=INDENT_LEFT;
  int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+(BUTTON_HEIGHT+CONTROLS_GAP_Y);
  int x2=x1+GROUP_WIDTH;
  int y2=y1+EDIT_HEIGHT;
//— create
  if(!m_spin_edit.Create(m_chart_id,m_name+"SpinEdit",m_subwin,x1,y1,x2,y2))
    return(false);
  if(!Add(m_spin_edit))
    return(false);
  m_spin_edit.MinValue(10);
  m_spin_edit.MaxValue(100);
  m_spin_edit.Value(50);
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_spin_edit.Value()));
//— succeed
  return(true);
 }
//+——————————————————————+
//| Event handler                                                    |
//+——————————————————————+
void CControlsDialog::OnChangeSpinEdit(void)
 {
  Comment(__FUNCTION__+" : Value="+IntegerToString(m_spin_edit.Value()));
 }
//+——————————————————————+
//| Global Variables                                                 |
//+——————————————————————+
CControlsDialog ExtDialog;
//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
 {
//— create application dialog
  if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
    return(INIT_FAILED);
//— run application
  ExtDialog.Run();
//— succeed
  return(INIT_SUCCEEDED);
 }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
 {
//— clear comments
  Comment("");
//— destroy dialog
  ExtDialog.Destroy(reason);
 }
//+——————————————————————+
//| Expert chart event function                                      |
//+——————————————————————+
void OnChartEvent(const int id,         // event ID  
                const long& lparam,   // event parameter of the long type
                const double& dparam, // event parameter of the double type
                const string& sparam) // event parameter of the string type
 {
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
 }

CDialog

CDialog は Dialog の複雑なコントロールのクラスです。

説明

CDialog クラスは、グループ内のいろいろなの関数の制御を組み合わせることを意図しています。

宣言

  class CDialog : public CWndContainer

タイトル

  #include <ControlsDialog.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CDialog

直接子孫

CAppDialog

クラスメソッド

Create

 

Create

コントロールの作成

チャートイベントハンドラ

 

OnEvent

全てのチャートイベントのハンドラ

プロパティ

 

Caption

「Caption」プロパティの値を取得/設定します。

Add

 

Add

クライアント領域にコントロールを追加します。

依存コントロール

 

CreateWhiteBorder

依存コントロール(白い境界)を作成します。

CreateBackground

依存コントロール(背景)を作成します。

CreateCaption

依存コントロール(キャプション)を作成します。

CreateButtonClose

依存コントロール(「close」ボタン)を作成します。

CreateClientArea

依存コントロール(クライアント領域)を作成します。

依存コントロールのイベントハンドラ

 

OnClickCaption

「ClickCaption」イベントハンドラ

OnClickButtonClose

「ClickButtonClose」イベントハンドラ

クライアント領域へのアクセス

 

ClientAreaVisible

クライアント領域が表示されているかを示す値を設定します。

ClientAreaLeft

コントロールクライアント領域の左上隅の X 座標を取得します。

ClientAreaTop

コントロールクライアント領域の左上隅の Y 座標を取得します。

ClientAreaRight

コントロールクライアント領域の右下隅の X 座標を取得します。

ClientAreaBottom

コントロールクライアント領域の右下隅の Y 座標を取得します。

ClientAreaWidth

クライアント領域の幅を取得します。

ClientAreaHeight

クライアント領域の高さを取得します。

ドラッグイベントハンドラ

 

OnDialogDragStart

「DialogDragStart」イベントハンドラ(仮想)

OnDialogDragProcess

「DialogDragProcess」イベントハンドラ(仮想)

OnDialogDragEnd

「DialogDragEnd」イベントハンドラ(仮想)

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

Destroy, OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide

 

CAppDialog

CAppDialog は、アプリケーションダイアログの(依存コントロールを含む)複雑なコントロールのクラスです。

説明

CAppDialog クラスは、MQL5 プログラム内のグループ内のいろいろなの関数の制御を組み合わせることを意図しています。

宣言

  class CAppDialog : public CDialog

タイトル

  #include <ControlsDialog.mqh>

継承階層

  CObject

      CWnd

          CWndContainer

              CDialog

                  CAppDialog

クラスメソッド

作成と破壊

 

Create

コントロールの作成

Destroy

コントロールの破壊

イベント処理

 

OnEvent

全てのチャートイベントのハンドラ

Run

 

Run

コントロールの実行

チャートイベント処理

 

ChartEvent

全てのチャートイベントのハンドラ

設定

 

Minimized

コントロールが最小化されているかを示す値を設定します。

Save/Load

 

IniFileSave

コントロールの状態をファイルに保存します。

IniFileLoad

コントロールの状態をファイルから読み込みます。

IniFileName

コントロールの状態を読み込み/保存するためのファイル名を設定します。

IniFileExt

コントロールの状態を読み込み/保存するためのファイル拡張子を/設定します。

初期化

 

CreateCommon

共通の初期化メソッド

CreateExpert

エキスパートアドバイザーの初期化メソッド

CreateIndicator

指標の初期化メソッド

依存コントロール

 

CreateButtonMinMax

依存コントロールを作成します。(ボタンを最小化/最大化)

依存コントロールのイベントハンドラ

 

OnClickButtonClose

「ClickButtonClose」イベントハンドラ(仮想)

OnClickButtonMinMax

「ClickButtonMinMax」イベントハンドラ(仮想)

外部イベント

 

OnAnotherApplicationClose

外部イベントハンドラ(仮想)

メソッド

 

Rebound

CRect クラスの座標を使用してコントロールの新しい座標を設定します。

Minimize

最小化した状態でコントロールを表示します。

Maximize

最大化(元に返す)状態のコントロールを表示します。

CreateInstanceId

コントロールオブジェクト名の一意のIDを作成します。

ProgramName

MQL5 プログラムの名称を取得します。

SubwinOff

コントロールサブウィンドウの Y オフセットを取得します。

クラスから継承されたメソッド CObject

Prev, Prev, Next, Next, Type, Compare

クラスから継承されたメソッド CWnd

Name, ControlsTotal, Control, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Contains, Contains, Alignment, Align, Id, IsEnabled, IsVisible, Visible, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop

クラスから継承されたメソッド CWndContainer

OnMouseEvent, ControlsTotal, Control, ControlFind, MouseFocusKill, Add, Add, Delete, Delete, Move, Move, Shift, Id, Enable, Disable, Show, Hide

クラスから継承されたメソッド CDialog

Caption, Caption, Add, Add

Originally posted 2019-07-30 10:19:31.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">