Start Developing GUI Panel ...

This commit is contained in:
2024-09-23 17:55:28 +03:30
parent 0eaaf6bd36
commit a36e78254d
9 changed files with 1119 additions and 606 deletions
@@ -0,0 +1,162 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XCButton
// Description: provides all based classes for use ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
#include "../x-saherelm.base.class.mq5"
//
// Definitions ...
//
// Implementation ...
//
// a Button Creation Class ...
class XCButton : XSCBase
{
//
// Public ...
public:
//
// Constructor(s) ...
void XCButton()
{
}
//
// Deconstructor ...
void ~XCButton()
{
}
//
// Actions ...
/**
* Create an Instance of Class Object ...
*
* @param name: Object Name
* @param xDis: X Distance
* @param yDis: Y Distance
* @param xSize: X Size
* @param ySize: Y Size
*/
bool Create(
string name,
int xDis,
int yDis,
int xSize,
int ySize //
)
{
//
// Object creation and property settings
bool result = false;
//
result = ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0);
if (!result)
{
return result;
}
//
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize);
ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize);
//
mName = name;
//
return result;
}
/**
* Destroy Class Instance ...
*/
void Destroy()
{
ObjectDelete(0, mName);
}
//
// Getter(s) / Setter(s) ...
/**
* Set Object Border Color ...
*
* @param value: color
*/
void SetBorderColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value);
}
/**
* Set Object Background Color ...
*
* @param value: color
*/
void SetBGColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value);
}
/**
* Set Object Text ...
*
* @param value: text
*/
void SetText(string value)
{
ObjectSetString(0, mName, OBJPROP_TEXT, value);
}
//
// Protected ...
protected:
//
// Private ...
private:
//
// Props ...
//
string mName; // Name of Object
//
// Mouse state tracking variables ...
int mlbDownX;
int mlbDownY;
int mlbDownXDistance;
int mlbDownYDistance;
int mPreviousMouseState;
//
bool mMovingState; // State for whether the object is moving
//
string mAddedNames[]; // Array of added names
long mAddedXDisDiffrence[]; // Arrays to store added distance differences
long mAddedYDisDiffrence[]; // Arrays to store added distance differences
};
@@ -0,0 +1,182 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XCEdit
// Description: provides all based classes for use ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
#include "../x-saherelm.base.class.mq5"
//
// Definitions ...
//
// Implementation ...
//
// a Label Creation Class ...
class XCEdit : XSCBase
{
//
// Public ...
public:
//
// Constructor(s) ...
void XCEdit()
{
}
//
// Deconstructor ...
void ~XCEdit()
{
}
//
// Actions ...
/**
* Create an Instance of Class Object ...
*
* @param name: Object Name
* @param xDis: X Distance
* @param yDis: Y Distance
* @param xSize: X Size
* @param ySize: Y Size
*/
bool Create(
string name,
int xDis,
int yDis,
int xSize,
int ySize //
)
{
//
// Object creation and property settings
bool result = false;
//
result = ObjectCreate(0, name, OBJ_EDIT, 0, 0, 0);
if (!result)
{
return result;
}
//
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize);
ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize);
//
mName = name;
//
return result;
}
/**
* Destroy Class Instance ...
*/
void Destroy()
{
ObjectDelete(0, mName);
}
//
// Getter(s) / Setter(s) ...
/**
* Set Object Border Color ...
*
* @param value: color
*/
void SetBorderColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value);
}
/**
* Set Background Color of Object ...
*
* @param value: color
*/
void SetBGColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value);
}
/**
* Set Object Text Color ...
*
* @param value: color
*/
void SetTextColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_COLOR, value);
}
/**
* Set Text of Object ...
*
* @param value: text
*/
void SetText(string value)
{
ObjectSetString(0, mName, OBJPROP_TEXT, value);
}
/**
* Get Current Text of Object ...
*
* @return ( string )
*/
string GetText()
{
return ObjectGetString(0, mName, OBJPROP_TEXT);
}
//
// Protected ...
protected:
//
// Private ...
private:
//
// Props ...
//
string mName; // Name of Object
//
// Mouse state tracking variables ...
int mlbDownX;
int mlbDownY;
int mlbDownXDistance;
int mlbDownYDistance;
int mPreviousMouseState;
//
bool mMovingState; // State for whether the object is moving
//
string mAddedNames[]; // Array of added names
long mAddedXDisDiffrence[]; // Arrays to store added distance differences
long mAddedYDisDiffrence[]; // Arrays to store added distance differences
};
@@ -0,0 +1,176 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XCLabel
// Description: provides all based classes for use ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
#include "../x-saherelm.base.class.mq5"
//
// Definitions ...
//
// Implementation ...
//
// a Label Creation Class ...
class XCLabel : XSCBase
{
//
// Public ...
public:
//
// Constructor(s) ...
void XCLabel()
{
}
//
// Deconstructor ...
void ~XCLabel()
{
}
//
// Actions ...
/**
* Create an Instance of Class Object ...
*
* @param name: Object Name
* @param xDis: X Distance
* @param yDis: Y Distance
*/
bool Create(
string name,
int xDis,
int yDis //
)
{
//
// Object creation and property settings
bool result = false;
//
result = ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
if (!result)
{
return result;
}
//
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
//
mName = name;
//
return result;
}
/**
* Destroy Class Instance ...
*/
void Destroy()
{
ObjectDelete(0, mName);
}
//
// Getter(s) / Setter(s) ...
/**
* Set Text Color ...
*
* @param value: color
*/
void SetTextColor(color value)
{
ObjectSetInteger(0, mName, OBJPROP_COLOR, value);
}
/**
* Set Text of Object ...
*
* @param value: text
*/
void SetText(string value)
{
ObjectSetString(0, mName, OBJPROP_TEXT, value);
}
/**
* Get Text Of Object ...
*
* @return ( string )
*/
string GetText()
{
return ObjectGetString(0, mName, OBJPROP_TEXT);
}
/**
* Set Font Size of Object ...
*
* @param value: size
*/
void SetFontSize(int value)
{
ObjectSetInteger(0, mName, OBJPROP_FONTSIZE, value);
}
/**
* Set Font Name Of Object ...
*
* @param value: font name
*/
void SetFont(string value)
{
ObjectSetString(0, mName, OBJPROP_FONT, value);
}
//
// Protected ...
protected:
//
// Private ...
private:
//
// Props ...
//
string mName; // Name of Object
//
// Mouse state tracking variables ...
int mlbDownX;
int mlbDownY;
int mlbDownXDistance;
int mlbDownYDistance;
int mPreviousMouseState;
//
bool mMovingState; // State for whether the object is moving
//
string mAddedNames[]; // Array of added names
long mAddedXDisDiffrence[]; // Arrays to store added distance differences
long mAddedYDisDiffrence[]; // Arrays to store added distance differences
};
@@ -0,0 +1,213 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XCPanel
// Description: provides all based classes for use ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
// Imports ...
#include "../XCObjects/x-saherelm.x-button.class.mq5"
#include "../XCObjects/x-saherelm.x-edit.class.mq5"
#include "../XCObjects/x-saherelm.x-label.class.mq5"
#include "../XCObjects/x-saherelm.x-rectangle.label.class.mq5"
//
// Implementation ...
//
class XCPanel : XSCBase
{
public:
//
// Constructor(s) ...
void XCPanel()
{
//
// Enables mouse move events on the chart
ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);
}
//
// Deconstructor ...
void ~XCPanel()
{
Destroy();
}
//
// Action ...
//
bool Create(
string name,
int xDis,
int yDis,
int xSize,
int ySize,
//
// Title Bar ...
ENUM_BORDER_TYPE titleBarBorderType = BORDER_FLAT,
color titleBarBGColor = clrBlueViolet,
//
// Caption ...
string caption = "",
int captionontSize = 9,
color captionColor = clrWhite,
//
// Body ...
ENUM_BORDER_TYPE bodyBorderType = BORDER_FLAT,
color bodyBGColor = clrMediumSlateBlue //
)
{
//
bool result = false;
//
result = IsValid(name);
if (!result)
{
//
Destroy();
return result;
}
//
mTitleBarName = name + "_TITLE_BAR";
mTitleTextName = name + "_CAPTION";
mBodyName = name + "_BODY";
//
if (!IsValid(caption))
{
caption = name;
}
//
// Title Bar ...
int titleBarHeight = ySize / 5;
result = mTitleBar.Create(
mTitleBarName,
xDis,
yDis,
xSize,
titleBarHeight //
);
if (!result)
{
//
Destroy();
return result;
}
mTitleBar.SetBorderType(titleBarBorderType);
mTitleBar.SetBGColor(titleBarBGColor);
//
// Body ...
result = mBody.Create(
mBodyName,
xDis,
yDis + titleBarHeight - 1,
xSize,
ySize //
);
if (!result)
{
//
Destroy();
return result;
}
mBody.SetBorderType(bodyBorderType);
mBody.SetBGColor(bodyBGColor);
//
// Caption ...
result = mTitleText.Create(mTitleTextName, xDis, yDis);
if (!result)
{
//
Destroy();
return result;
}
mTitleText.SetText(caption);
mTitleText.SetTextColor(captionColor);
mTitleText.SetFontSize(captionontSize);
//
// Adding Child Objects ...
mTitleBar.Add(mBodyName);
mTitleBar.Add(mTitleTextName);
//
return result;
}
//
void Destroy()
{
//
mBodyName = NULL;
mTitleBarName = NULL;
mTitleTextName = NULL;
//
mBody.Destroy();
mTitleBar.Destroy();
mTitleText.Destroy();
}
/**
* Event Handling for Mouse Movement ...
* @param id: Event ID
* @param lparam: Event parameter of long type
* @param dparam: Event parameter of double type
* @param sparam: Event parameter of string type
*/
void OnEvent(
int id,
long lparam,
double dparam,
string sparam //
)
{
//
mTitleBar.OnEvent(
id,
lparam,
dparam,
sparam //
);
}
//
protected:
private:
//
// Props ...
//
string mBodyName;
string mTitleBarName;
string mTitleTextName;
//
XCLabel mTitleText;
XCRectangleLabel mBody;
XCRectangleLabel mTitleBar;
//
};
@@ -0,0 +1,268 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XCRectangleLabel
// Description: provides all based classes for use ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
#include "../x-saherelm.base.class.mq5"
//
// Definitions ...
//
// Implementation ...
//
// a Rectangle Label Creation Class ...
class XCRectangleLabel : XSCBase
{
//
// Public ...
public:
//
// Constructor(s) ...
void XCRectangleLabel()
{
}
//
// Deconstructor ...
void ~XCRectangleLabel()
{
}
//
// Getter(s) / Setter(s) ...
//
// Handlers ...
/**
* Event Handling for Mouse Movement ...
* @param id: Event ID
* @param lparam: Event parameter of long type
* @param dparam: Event parameter of double type
* @param sparam: Event parameter of string type
*/
void OnEvent(
int id,
long lparam,
double dparam,
string sparam //
)
{
//
// Handle mouse movement events for dragging the rectangle label
if (id == CHARTEVENT_MOUSE_MOVE)
{
//
int X = (int)lparam;
int Y = (int)dparam;
int MouseState = (int)sparam;
//
string name = mName;
int XSize = (int)ObjectGetInteger(0, name, OBJPROP_XSIZE);
int YSize = (int)ObjectGetInteger(0, name, OBJPROP_YSIZE);
int XDistance = (int)ObjectGetInteger(0, name, OBJPROP_XDISTANCE);
int YDistance = (int)ObjectGetInteger(0, name, OBJPROP_YDISTANCE);
//
if (MouseState == 1 &&
mPreviousMouseState == 0)
{
//
mlbDownX = X;
mlbDownY = Y;
mlbDownXDistance = XDistance;
mlbDownYDistance = YDistance;
//
if (X >= XDistance &&
Y >= YDistance &&
X <= XDistance + XSize &&
Y <= YDistance + YSize)
{
mMovingState = true;
}
}
//
if (mMovingState)
{
//
ChartSetInteger(0, CHART_MOUSE_SCROLL, false);
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY);
//
for (int i = 0; i < ArraySize(mAddedNames); i++)
{
//
ObjectSetInteger(0, mAddedNames[i], OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX - mAddedXDisDiffrence[i]);
ObjectSetInteger(0, mAddedNames[i], OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY - mAddedYDisDiffrence[i]);
}
//
ChartRedraw(0);
}
//
if (MouseState == 0)
{
//
mMovingState = false;
ChartSetInteger(0, CHART_MOUSE_SCROLL, true);
}
//
mPreviousMouseState = MouseState;
}
}
//
// Actions ...
/**
* Create an Instance of Class Object ...
*
* @param name: Object Name
* @param xDis: X Distance
* @param yDis: Y Distance
* @param xSize: X Size
* @param ySize: Y Size
*/
bool Create(
string name,
int xDis,
int yDis,
int xSize,
int ySize //
)
{
//
// Object creation and property settings
bool result = false;
//
result = ObjectCreate(0, name, OBJ_RECTANGLE_LABEL, 0, 0, 0);
if (!result)
{
return result;
}
//
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize);
ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize);
//
mName = name;
//
return result;
}
/**
* Destroy Class Instance ...
*/
void Destroy()
{
ObjectDelete(0, mName);
}
/**
* Set Object Border Type ...
*
* @param borderType: Specified border type
*/
void SetBorderType(ENUM_BORDER_TYPE borderType)
{
//
ObjectSetInteger(
0,
mName,
OBJPROP_BORDER_TYPE,
borderType //
);
}
/**
* Set Object Background Color
*
* @param value: color
*/
void SetBGColor(color value)
{
//
ObjectSetInteger(
0,
mName,
OBJPROP_BGCOLOR,
value //
);
}
/**
* Add a Name to Object
* @param name: name
*/
void Add(string name)
{
//
// Add a new object by name to the rectangle label and track distances
ArrayResize(mAddedNames, ArraySize(mAddedNames) + 1);
ArrayResize(mAddedXDisDiffrence, ArraySize(mAddedXDisDiffrence) + 1);
ArrayResize(mAddedYDisDiffrence, ArraySize(mAddedYDisDiffrence) + 1);
//
mAddedNames[ArraySize(mAddedNames) - 1] = name;
mAddedXDisDiffrence[ArraySize(mAddedXDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_XDISTANCE) - ObjectGetInteger(0, name, OBJPROP_XDISTANCE);
mAddedYDisDiffrence[ArraySize(mAddedYDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_YDISTANCE) - ObjectGetInteger(0, name, OBJPROP_YDISTANCE);
}
//
// Protected ...
protected:
//
// Private ...
private:
//
// Props ...
//
string mName; // Name of Object
//
// Mouse state tracking variables ...
int mlbDownX;
int mlbDownY;
int mlbDownXDistance;
int mlbDownYDistance;
int mPreviousMouseState;
//
bool mMovingState; // State for whether the object is moving
//
string mAddedNames[]; // Array of added names
long mAddedXDisDiffrence[]; // Arrays to store added distance differences
long mAddedYDisDiffrence[]; // Arrays to store added distance differences
};
@@ -1,162 +0,0 @@
// ///////////////////////////////////////////////////////
// //
// // SaherElm IT Center MQL5 Class Library
// // --------------------------------------
// // Name: XCButton
// // Description: provides all based classes for use ...
// //
// //
// // Maintainer:
// // ------------
// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
// //
// //////////////////////////////////////////////////////
// //
// // Global Properties ...
// #property library
// #property copyright "Copyright 2023, SaherElm IT Center"
// #property link "https://www.saherelm.ir"
// #property version "1.00"
// #property strict
// //
// #include "../x-saherelm.base.class.mq5"
// //
// // Definitions ...
// //
// // Implementation ...
// //
// // a Button Creation Class ...
// class XCButton : XSCBase
// {
// //
// // Public ...
// public:
// //
// // Constructor(s) ...
// void XCButton()
// {
// }
// //
// // Deconstructor ...
// void ~XCButton()
// {
// }
// //
// // Actions ...
// /**
// * Create an Instance of Class Object ...
// *
// * @param name: Object Name
// * @param xDis: X Distance
// * @param yDis: Y Distance
// * @param xSize: X Size
// * @param ySize: Y Size
// */
// bool Create(
// string name,
// int xDis,
// int yDis,
// int xSize,
// int ySize //
// )
// {
// //
// // Object creation and property settings
// bool result = false;
// //
// result = ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0);
// if (!result)
// {
// return result;
// }
// //
// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
// ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize);
// ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize);
// //
// mName = name;
// //
// return result;
// }
// /**
// * Destroy Class Instance ...
// */
// void Destroy()
// {
// ObjectDelete(0, mName);
// }
// //
// // Getter(s) / Setter(s) ...
// /**
// * Set Object Border Color ...
// *
// * @param value: color
// */
// void SetBorderColor(color value)
// {
// ObjectSetInteger(0, mName, OBJPROP_BORDER_COLOR, value);
// }
// /**
// * Set Object Background Color ...
// *
// * @param value: color
// */
// void SetBGColor(color value)
// {
// ObjectSetInteger(0, mName, OBJPROP_BGCOLOR, value);
// }
// /**
// * Set Object Text ...
// *
// * @param value: text
// */
// void SetText(string value)
// {
// ObjectSetString(0, mName, OBJPROP_TEXT, value);
// }
// //
// // Protected ...
// protected:
// //
// // Private ...
// private:
// //
// // Props ...
// //
// string mName; // Name of Object
// //
// // Mouse state tracking variables ...
// int mlbDownX;
// int mlbDownY;
// int mlbDownXDistance;
// int mlbDownYDistance;
// int mPreviousMouseState;
// //
// bool mMovingState; // State for whether the object is moving
// //
// string mAddedNames[]; // Array of added names
// long mAddedXDisDiffrence[]; // Arrays to store added distance differences
// long mAddedYDisDiffrence[]; // Arrays to store added distance differences
// };
@@ -1,176 +0,0 @@
// ///////////////////////////////////////////////////////
// //
// // SaherElm IT Center MQL5 Class Library
// // --------------------------------------
// // Name: XCLabel
// // Description: provides all based classes for use ...
// //
// //
// // Maintainer:
// // ------------
// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
// //
// //////////////////////////////////////////////////////
// //
// // Global Properties ...
// #property library
// #property copyright "Copyright 2023, SaherElm IT Center"
// #property link "https://www.saherelm.ir"
// #property version "1.00"
// #property strict
// //
// #include "../x-saherelm.base.class.mq5"
// //
// // Definitions ...
// //
// // Implementation ...
// //
// // a Label Creation Class ...
// class XCLabel : XSCBase
// {
// //
// // Public ...
// public:
// //
// // Constructor(s) ...
// void XCLabel()
// {
// }
// //
// // Deconstructor ...
// void ~XCLabel()
// {
// }
// //
// // Actions ...
// /**
// * Create an Instance of Class Object ...
// *
// * @param name: Object Name
// * @param xDis: X Distance
// * @param yDis: Y Distance
// */
// bool Create(
// string name,
// int xDis,
// int yDis //
// )
// {
// //
// // Object creation and property settings
// bool result = false;
// //
// result = ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
// if (!result)
// {
// return result;
// }
// //
// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
// //
// mName = name;
// //
// return result;
// }
// /**
// * Destroy Class Instance ...
// */
// void Destroy()
// {
// ObjectDelete(0, mName);
// }
// //
// // Getter(s) / Setter(s) ...
// /**
// * Set Text Color ...
// *
// * @param value: color
// */
// void SetTextColor(color value)
// {
// ObjectSetInteger(0, mName, OBJPROP_COLOR, value);
// }
// /**
// * Set Text of Object ...
// *
// * @param value: text
// */
// void SetText(string value)
// {
// ObjectSetString(0, mName, OBJPROP_TEXT, value);
// }
// /**
// * Get Text Of Object ...
// *
// * @return ( string )
// */
// string GetText()
// {
// return ObjectGetString(0, mName, OBJPROP_TEXT);
// }
// /**
// * Set Font Size of Object ...
// *
// * @param value: size
// */
// void SetFontSize(int value)
// {
// ObjectSetInteger(0, mName, OBJPROP_FONTSIZE, value);
// }
// /**
// * Set Font Name Of Object ...
// *
// * @param value: font name
// */
// void SetFont(string value)
// {
// ObjectSetString(0, mName, OBJPROP_FONT, value);
// }
// //
// // Protected ...
// protected:
// //
// // Private ...
// private:
// //
// // Props ...
// //
// string mName; // Name of Object
// //
// // Mouse state tracking variables ...
// int mlbDownX;
// int mlbDownY;
// int mlbDownXDistance;
// int mlbDownYDistance;
// int mPreviousMouseState;
// //
// bool mMovingState; // State for whether the object is moving
// //
// string mAddedNames[]; // Array of added names
// long mAddedXDisDiffrence[]; // Arrays to store added distance differences
// long mAddedYDisDiffrence[]; // Arrays to store added distance differences
// };
@@ -1,268 +0,0 @@
// ///////////////////////////////////////////////////////
// //
// // SaherElm IT Center MQL5 Class Library
// // --------------------------------------
// // Name: XCRectangleLabel
// // Description: provides all based classes for use ...
// //
// //
// // Maintainer:
// // ------------
// // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
// //
// //////////////////////////////////////////////////////
// //
// // Global Properties ...
// #property library
// #property copyright "Copyright 2023, SaherElm IT Center"
// #property link "https://www.saherelm.ir"
// #property version "1.00"
// #property strict
// //
// #include "../x-saherelm.base.class.mq5"
// //
// // Definitions ...
// //
// // Implementation ...
// //
// // a Rectangle Label Creation Class ...
// class XCRectangleLabel : XSCBase
// {
// //
// // Public ...
// public:
// //
// // Constructor(s) ...
// void XCRectangleLabel()
// {
// }
// //
// // Deconstructor ...
// void ~XCRectangleLabel()
// {
// }
// //
// // Getter(s) / Setter(s) ...
// //
// // Handlers ...
// /**
// * Event Handling for Mouse Movement ...
// * @param id: Event ID
// * @param lparam: Event parameter of long type
// * @param dparam: Event parameter of double type
// * @param sparam: Event parameter of string type
// */
// void OnEvent(
// int id,
// long lparam,
// double dparam,
// string sparam //
// )
// {
// //
// // Handle mouse movement events for dragging the rectangle label
// if (id == CHARTEVENT_MOUSE_MOVE)
// {
// //
// int X = (int)lparam;
// int Y = (int)dparam;
// int MouseState = (int)sparam;
// //
// string name = mName;
// int XSize = (int)ObjectGetInteger(0, name, OBJPROP_XSIZE);
// int YSize = (int)ObjectGetInteger(0, name, OBJPROP_YSIZE);
// int XDistance = (int)ObjectGetInteger(0, name, OBJPROP_XDISTANCE);
// int YDistance = (int)ObjectGetInteger(0, name, OBJPROP_YDISTANCE);
// //
// if (MouseState == 1 &&
// mPreviousMouseState == 0)
// {
// //
// mlbDownX = X;
// mlbDownY = Y;
// mlbDownXDistance = XDistance;
// mlbDownYDistance = YDistance;
// //
// if (X >= XDistance &&
// Y >= YDistance &&
// X <= XDistance + XSize &&
// Y <= YDistance + YSize)
// {
// mMovingState = true;
// }
// }
// //
// if (mMovingState)
// {
// //
// ChartSetInteger(0, CHART_MOUSE_SCROLL, false);
// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX);
// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY);
// //
// for (int i = 0; i < ArraySize(mAddedNames); i++)
// {
// //
// ObjectSetInteger(0, mAddedNames[i], OBJPROP_XDISTANCE, mlbDownXDistance + X - mlbDownX - mAddedXDisDiffrence[i]);
// ObjectSetInteger(0, mAddedNames[i], OBJPROP_YDISTANCE, mlbDownYDistance + Y - mlbDownY - mAddedYDisDiffrence[i]);
// }
// //
// ChartRedraw(0);
// }
// //
// if (MouseState == 0)
// {
// //
// mMovingState = false;
// ChartSetInteger(0, CHART_MOUSE_SCROLL, true);
// }
// //
// mPreviousMouseState = MouseState;
// }
// }
// //
// // Actions ...
// /**
// * Create an Instance of Class Object ...
// *
// * @param name: Object Name
// * @param xDis: X Distance
// * @param yDis: Y Distance
// * @param xSize: X Size
// * @param ySize: Y Size
// */
// bool Create(
// string name,
// int xDis,
// int yDis,
// int xSize,
// int ySize //
// )
// {
// //
// // Object creation and property settings
// bool result = false;
// //
// result = ObjectCreate(0, name, OBJ_RECTANGLE_LABEL, 0, 0, 0);
// if (!result)
// {
// return result;
// }
// //
// ObjectSetInteger(0, name, OBJPROP_XDISTANCE, xDis);
// ObjectSetInteger(0, name, OBJPROP_YDISTANCE, yDis);
// ObjectSetInteger(0, name, OBJPROP_XSIZE, xSize);
// ObjectSetInteger(0, name, OBJPROP_YSIZE, ySize);
// //
// mName = name;
// //
// return result;
// }
// /**
// * Destroy Class Instance ...
// */
// void Destroy()
// {
// ObjectDelete(0, mName);
// }
// /**
// * Set Object Border Type ...
// *
// * @param borderType: Specified border type
// */
// void SetBorderType(ENUM_BORDER_TYPE borderType)
// {
// //
// ObjectSetInteger(
// 0,
// mName,
// OBJPROP_BORDER_TYPE,
// borderType //
// );
// }
// /**
// * Set Object Background Color
// *
// * @param value: color
// */
// void SetBGColor(color value)
// {
// //
// ObjectSetInteger(
// 0,
// mName,
// OBJPROP_BGCOLOR,
// value //
// );
// }
// /**
// * Add a Name to Object
// * @param name: name
// */
// void Add(string name)
// {
// //
// // Add a new object by name to the rectangle label and track distances
// ArrayResize(mAddedNames, ArraySize(mAddedNames) + 1);
// ArrayResize(mAddedXDisDiffrence, ArraySize(mAddedXDisDiffrence) + 1);
// ArrayResize(mAddedYDisDiffrence, ArraySize(mAddedYDisDiffrence) + 1);
// //
// mAddedNames[ArraySize(mAddedNames) - 1] = name;
// mAddedXDisDiffrence[ArraySize(mAddedXDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_XDISTANCE) - ObjectGetInteger(0, name, OBJPROP_XDISTANCE);
// mAddedYDisDiffrence[ArraySize(mAddedYDisDiffrence) - 1] = ObjectGetInteger(0, mName, OBJPROP_YDISTANCE) - ObjectGetInteger(0, name, OBJPROP_YDISTANCE);
// }
// //
// // Protected ...
// protected:
// //
// // Private ...
// private:
// //
// // Props ...
// //
// string mName; // Name of Object
// //
// // Mouse state tracking variables ...
// int mlbDownX;
// int mlbDownY;
// int mlbDownXDistance;
// int mlbDownYDistance;
// int mPreviousMouseState;
// //
// bool mMovingState; // State for whether the object is moving
// //
// string mAddedNames[]; // Array of added names
// long mAddedXDisDiffrence[]; // Arrays to store added distance differences
// long mAddedYDisDiffrence[]; // Arrays to store added distance differences
// };
+118
View File
@@ -0,0 +1,118 @@
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2020, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
//
// Imports ...
#include "../Classes/XCObjects/x-saherelm.x-panel.class.mq5"
#include <Trade/Trade.mqh>
//
CTrade trade;
//
XCPanel panel;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//
panel.Create("XPanel", 100, 100, 200, 100);
//
// Enables mouse move events on the chart
// ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);
// Initialize and set properties for Title bar, main dashboard, and all other elements
// TitleBar.Create("TitleBar", 100, 100, 200, 20);
// TitleBar.SetBorderType(BORDER_FLAT);
// TitleBar.SetBGColor(C'27, 59, 146');
// MainDashboardBody.Create("MainDashboardBody", 100, 119, 200, 100);
// MainDashboardBody.SetBorderType(BORDER_FLAT);
// MainDashboardBody.SetBGColor(C'102, 152, 250');
// TitleText.Create("TitleText", 110, 101);
// TitleText.SetText("Simple Trading EA V1.0");
// TitleText.SetFontSize(10);
// TitleText.SetTextColor(clrWhite);
// LotSizeText.Create("LotSizeText", 110, 140);
// LotSizeText.SetText("Lot Size:");
// LotSizeText.SetFontSize(12);
// LotSizeText.SetTextColor(clrWhite);
// LotSize.Create("LotSize", 220, 140, 50, 20);
// LotSize.SetBorderColor(clrBlack);
// LotSize.SetBGColor(clrWhiteSmoke);
// LotSize.SetText("0.01");
// LotSize.SetTextColor(clrBlack);
// BuyButton.Create("BuyButton", 110, 180, 80, 25);
// BuyButton.SetBorderColor(clrBlack);
// BuyButton.SetText("Buy");
// BuyButton.SetBGColor(clrLime);
// SellButton.Create("SellButton", 210, 180, 80, 25);
// SellButton.SetBorderColor(clrBlack);
// SellButton.SetText("Sell");
// SellButton.SetBGColor(clrRed);
// Add the other elements to the Central Element i.e. TitleBar object in this case
// TitleBar.Add("MainDashboardBody");
// TitleBar.Add("TitleText");
// TitleBar.Add("LotSizeText");
// TitleBar.Add("LotSize");
// TitleBar.Add("BuyButton");
// TitleBar.Add("SellButton");
ChartRedraw(0); // Redraws the chart
return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Destroys all GUI objects
// TitleBar.Destroy();
// MainDashboardBody.Destroy();
// TitleText.Destroy();
// LotSizeText.Destroy();
// LotSize.Destroy();
// BuyButton.Destroy();
// SellButton.Destroy();
}
//+------------------------------------------------------------------+
//|Chart event handling function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
// Handles click events for Buy and Sell buttons and opens corresponding positions
// if (id == CHARTEVENT_OBJECT_CLICK)
// {
// double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
// double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// if (sparam == "BuyButton")
// {
// trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, (double)LotSize.GetText(), ask, 0, 0);
// }
// if (sparam == "SellButton")
// {
// trade.PositionOpen(_Symbol, ORDER_TYPE_SELL, (double)LotSize.GetText(), bid, 0, 0);
// }
// }
// // Passes events to the TitleBar object
// TitleBar.OnEvent(id, lparam, dparam, sparam);
//
panel.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+