Start Developing GUI Panel ...
This commit is contained in:
@@ -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
|
||||
};
|
||||
Reference in New Issue
Block a user