// /////////////////////////////////////////////////////// // // // // 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 // };