Refactor XCObjects and Extends them from Base XCObject Class and also Implement GUI Features on EA Class and Refactor Inputs ...

This commit is contained in:
2024-09-28 19:30:51 +03:30
parent d91c7967c2
commit d3e0d74d31
7 changed files with 981 additions and 395 deletions
@@ -20,7 +20,7 @@
#property strict
//
#include "../x-saherelm.base.class.mq5"
#include "../XCObjects/x-saherelm.xcobject.class.mq5"
//
// Definitions ...
@@ -30,7 +30,7 @@
//
// a Rectangle Label Creation Class ...
class XCRectangleLabel : XSCBase
class XCRectangleLabel : public XCObject
{
//
// Public ...
@@ -48,7 +48,68 @@ class XCRectangleLabel : XSCBase
}
//
// Getter(s) / Setter(s) ...
// 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,
long chartID = 0 //
)
{
//
// Object creation and property settings
bool result = false;
//
result = ObjectCreate(chartID, name, OBJ_RECTANGLE_LABEL, 0, 0, 0);
if (!result)
{
return result;
}
//
ObjectSetInteger(chartID, name, OBJPROP_XDISTANCE, xDis);
ObjectSetInteger(chartID, name, OBJPROP_YDISTANCE, yDis);
ObjectSetInteger(chartID, name, OBJPROP_XSIZE, xSize);
ObjectSetInteger(chartID, name, OBJPROP_YSIZE, ySize);
//
mName = name;
mChartID = chartID;
//
return result;
}
/**
* 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);
}
//
// Handlers ...
@@ -137,67 +198,18 @@ class XCRectangleLabel : XSCBase
}
//
// 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);
}
// Getter(s) / Setter(s) ...
/**
* Set Object Border Type ...
*
* @param borderType: Specified border type
*/
void SetBorderType(ENUM_BORDER_TYPE borderType)
void BorderType(ENUM_BORDER_TYPE borderType)
{
//
ObjectSetInteger(
0,
mChartID,
mName,
OBJPROP_BORDER_TYPE,
borderType //
@@ -209,55 +221,17 @@ class XCRectangleLabel : XSCBase
*
* @param value: color
*/
void SetBGColor(color value)
void BGColor(color value)
{
//
ObjectSetInteger(
0,
mChartID,
mName,
OBJPROP_BGCOLOR,
value //
);
}
/**
* Set Object ZOrder ...
*
* @param value: z order
*/
void SetZOrder(int value)
{
ObjectSetInteger(0, mName, OBJPROP_ZORDER, value);
}
/**
* Set Object as Background ...
*
* @param value: boolean value
*/
void SetAsBackGround(bool value)
{
ObjectSetInteger(0, mName, OBJPROP_BACK, 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:
@@ -267,9 +241,6 @@ class XCRectangleLabel : XSCBase
//
// Props ...
//
string mName; // Name of Object
//
// Mouse state tracking variables ...
int mlbDownX;