0
Views
0
Downloads
0
Favorites
OBJ_EDIT_Example
//+------------------------------------------------------------------+
//| OBJ_EDIT_Example.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property description "The Expert Advisor creates and controls the OBJ_EDIT object"
#property strict
//+------------------------------------------------------------------+
//| Òèïû êíîïîê |
//+------------------------------------------------------------------+
enum ENUM_BUTTON_TYPE
{
ALIGN_BUTTON=1,
CORNER_BUTTON=2,
COORD_BUTTON=3
};
//--- âõîäíûå ïàðàìåòðû
input string InpName="OBJ_Edit_1"; // Èìÿ îáúåêòà
input int InpX=150; // Ðàññòîÿíèå ïî îñè X
input int InpY=250; // Ðàññòîÿíèå ïî îñè Y
input string InpText="Text"; // Òåêñò îáúåêòà
input string InpFont="Arial"; // Øðèôò
input int InpFontSize=14; // Ðàçìåð øðèôòà
input ENUM_ALIGN_MODE InpAlign=ALIGN_CENTER; // Ñïîñîá âûðàâíèâàíèÿ òåêñòà
input bool InpReadOnly=false; // Âîçìîæíîñòü ðåäàêòèðîâàòü
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Óãîë ãðàôèêà äëÿ ïðèâÿçêè
input color InpColor=clrNavy; // Öâåò òåêñòà
input color InpBackColor=clrIvory; // Öâåò ôîíà
input color InpBorderColor=clrOrangeRed; // Öâåò ãðàíèöû
input bool InpBack=false; // Îáúåêò íà çàäíåì ïëàíå
input bool InpSelection=false; // Âûäåëèòü äëÿ ïåðåìåùåíèé
input bool InpHidden=false; // Ñêðûò â ñïèñêå îáúåêòîâ
input long InpZOrder=0; // Ïðèîðèòåò íà íàæàòèå ìûøüþ
//---
#include <ChartObjects\ChartObjectsTxtControls.mqh>
//--- êíîïêà ReadOnly
CChartObjectButton ExtReadOnlyButton;
//--- êíîïêà Selectable
CChartObjectButton ExtSelectableButton;
//--- êíîïêè óïðàâëåíèÿ ñïîñîáîì âûðàâíèâàíèÿ
CChartObjectButton ExtAlignLButton;
CChartObjectButton ExtAlignCButton;
CChartObjectButton ExtAlignRButton;
//--- êíîïêè óïðàâëåíèÿ óãëîì ïðèâÿçêè
CChartObjectButton ExtCornerLUButton;
CChartObjectButton ExtCornerLLButton;
CChartObjectButton ExtCornerRUButton;
CChartObjectButton ExtCornerRLButton;
//--- êíîïêè +- äëÿ êîîðäèíàò x è y
CChartObjectButton ExtCoordIncXButton;
CChartObjectButton ExtCoordDecXButton;
CChartObjectButton ExtCoordIncYButton;
CChartObjectButton ExtCoordDecYButton;
//--- èíôîðìàöèîííûå ïîëÿ
CChartObjectEdit ExtXCoordinateInfo;
CChartObjectEdit ExtYCoordinateInfo;
CChartObjectEdit ExtCornerInfo;
CChartObjectEdit ExtAlignInfo;
CChartObjectEdit ExtReadOnlyInfo;
CChartObjectEdit ExtSelectableInfo;
//---
bool ExtInitialized=false;
long ExtChartWidth=0;
long ExtChartHeight=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- îïðåäåëèì ðàçìåðû îêíà
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,ExtChartWidth))
{
Print("Íå óäàëîñü ïîëó÷èòü øèðèíó ãðàôèêà! Êîä îøèáêè = ",GetLastError());
return(INIT_FAILED);
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,ExtChartHeight))
{
Print("Íå óäàëîñü ïîëó÷èòü âûñîòó ãðàôèêà! Êîä îøèáêè = ",GetLastError());
return(INIT_FAILED);
}
//--- ñîçäàäèì îáúåêò OBJ_EDIT íà ãðàôèêå
if(!EditCreate(0,InpName,0,InpX,InpY,250,20,InpText,InpFont,InpFontSize,InpAlign,InpReadOnly,
InpCorner,InpColor,InpBackColor,InpBorderColor,InpBack,InpSelection,InpHidden,InpZOrder))
{
return(INIT_FAILED);
}
//--- ïîäãîòàâëèâàåì êíîïêè
PrepareButtons();
ExtInitialized=true;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- óäàëÿåì îáúåêò OBJ_EDIT ñ ãðàôèêà
ObjectDelete(0,InpName);
//--- óäàëÿåì èíôîðìàöèîííûå ïîëÿ
ObjectDelete(0,"edt_xcoord");
ObjectDelete(0,"edt_ycoord");
ObjectDelete(0,"edt_corner");
ObjectDelete(0,"edt_align");
ObjectDelete(0,"edt_read_only");
ObjectDelete(0,"edt_selectable");
//--- óäàëÿåì êíîïêè
ObjectDelete(0,"btn_read_only");
ObjectDelete(0,"btn_selectable");
//--- óäàëÿåì êíîïêè óïðàâëåíèÿ óãëîì ïðèâÿçêè
ObjectDelete(0,"btn_corner_left_upper");
ObjectDelete(0,"btn_corner_left_lower");
ObjectDelete(0,"btn_corner_right_upper");
ObjectDelete(0,"btn_corner_right_lower");
//--- óäàëÿåì êíîïêè óïðàâëåíèÿ âûðàâíèâàíèåì
ObjectDelete(0,"btn_align_left");
ObjectDelete(0,"btn_align_center");
ObjectDelete(0,"btn_align_right");
//--- óäàëÿåì êíîïêè óïðàâëåíèÿ êîîðäèíàòàìè
ObjectDelete(0,"btn_dec_y");
ObjectDelete(0,"btn_inc_y");
ObjectDelete(0,"btn_inc_x");
ObjectDelete(0,"btn_dec_x");
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
int x=0,y=0;
bool res=true;
//---
if(!ExtInitialized)
return;
//---
int current_corner=(int)ObjectGetInteger(0,InpName,OBJPROP_CORNER);
bool inv_coord_corner_mode_x=false;
bool inv_coord_corner_mode_y=false;
//--- ñïîñîá ïðèðàùåíèÿ êîîðäèíàò ïðè çàäàííîì óãëå ïðèâÿçêè
switch(current_corner)
{
case CORNER_LEFT_LOWER: {inv_coord_corner_mode_y=true; break;}
case CORNER_RIGHT_UPPER: {inv_coord_corner_mode_x=true; break;}
case CORNER_RIGHT_LOWER: {inv_coord_corner_mode_x=true;
inv_coord_corner_mode_y=true; break;}
}
//--- ñáðîñèì çíà÷åíèå îøèáêè
ResetLastError();
//--- ïðîâåðêà ñîáûòèÿ íàæàòèÿ íà êíîïêó ìûøè
if(id==CHARTEVENT_OBJECT_CLICK)
{
Comment("CHARTEVENT_CLICK: "+sparam);
//--- êíîïêà óïðàâëåíèÿ ñâîéñòâîì readonly
if(sparam=="btn_read_only")
{
bool read_only=(bool)ObjectGetInteger(0,InpName,OBJPROP_READONLY);
read_only=!read_only;
res=ObjectSetInteger(0,InpName,OBJPROP_READONLY,read_only);
}
//--- êíîïêà óïðàâëåíèÿ ñâîéñòâîì selectable
if(sparam=="btn_selectable")
{
bool selectable=(bool)ObjectGetInteger(0,InpName,OBJPROP_SELECTABLE);
selectable=!selectable;
res=ObjectSetInteger(0,InpName,OBJPROP_SELECTABLE,selectable);
}
//--- êíîïêè óïðàâëåíèÿ ñâîéñòâîì ALIGN îáúåêòà Edit
if(sparam=="btn_align_left")
{
res=ObjectSetInteger(0,InpName,OBJPROP_ALIGN,ALIGN_LEFT);
}
if(sparam=="btn_align_center")
{
res=ObjectSetInteger(0,InpName,OBJPROP_ALIGN,ALIGN_CENTER);
}
if(sparam=="btn_align_right")
{
res=ObjectSetInteger(0,InpName,OBJPROP_ALIGN,ALIGN_RIGHT);
}
//--- êíîïêè óïðàâëåíèÿ êîîðäèíàòàìè îáúåêòà Edit
if(sparam=="btn_inc_x")
{
ButtonPressed(ExtCoordIncXButton,COORD_BUTTON);
x=(int)ObjectGetInteger(0,InpName,OBJPROP_XDISTANCE);
if(!inv_coord_corner_mode_x) x+=20; else x-=20;
if(x>ExtChartWidth) x=(int)ExtChartWidth;
if(x<0) x=0;
res=ObjectSetInteger(0,InpName,OBJPROP_XDISTANCE,x);
UnSelectButton(ExtCoordIncXButton);
}
if(sparam=="btn_dec_x")
{
ButtonPressed(ExtCoordDecXButton,COORD_BUTTON);
x=(int)ObjectGetInteger(0,InpName,OBJPROP_XDISTANCE);
if(!inv_coord_corner_mode_x) x-=20; else x+=20;
if(x<0) x=0;
res=ObjectSetInteger(0,InpName,OBJPROP_XDISTANCE,x);
UnSelectButton(ExtCoordDecXButton);
}
if(sparam=="btn_inc_y")
{
ButtonPressed(ExtCoordIncYButton,COORD_BUTTON);
y=(int)ObjectGetInteger(0,InpName,OBJPROP_YDISTANCE);
if(!inv_coord_corner_mode_y) y+=20; else y-=20;
if(y<0) y=0;
if(y>ExtChartHeight) y=(int)ExtChartHeight;
res=ObjectSetInteger(0,InpName,OBJPROP_YDISTANCE,y);
UnSelectButton(ExtCoordIncYButton);
}
if(sparam=="btn_dec_y")
{
ButtonPressed(ExtCoordDecYButton,COORD_BUTTON);
y=(int)ObjectGetInteger(0,InpName,OBJPROP_YDISTANCE);
// y-=20;
if(!inv_coord_corner_mode_y) y-=20; else y+=20;
if(y<0) y=0;
if(y>ExtChartHeight) y=(int)ExtChartHeight;
res=ObjectSetInteger(0,InpName,OBJPROP_YDISTANCE,y);
UnSelectButton(ExtCoordDecYButton);
}
//--- êíîïêè óïðàâëåíèÿ óãëîì ãðàôèêà äëÿ ïðèâÿçêè (OBJPROP_CORNER)
if(sparam=="btn_corner_left_upper")
{
res=ObjectSetInteger(0,InpName,OBJPROP_CORNER,CORNER_LEFT_UPPER);
}
if(sparam=="btn_corner_left_lower")
{
res=ObjectSetInteger(0,InpName,OBJPROP_CORNER,CORNER_LEFT_LOWER);
}
if(sparam=="btn_corner_right_upper")
{
res=ObjectSetInteger(0,InpName,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
}
if(sparam=="btn_corner_right_lower")
{
res=ObjectSetInteger(0,InpName,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
}
if(!res)
Print("Íå óäàëîñü èçìåíèòü ïàðàìåòð! Êîä îøèáêè = ",GetLastError());
else
{
ShowInfo(0,InpName);
ChartRedraw();
}
}
}
//+------------------------------------------------------------------+
//| Ñîçäàåò îáúåêò "Ïîëå ââîäà" |
//+------------------------------------------------------------------+
bool EditCreate(const long chart_ID=0, // ID ãðàôèêà
const string name="Edit", // èìÿ îáúåêòà
const int sub_window=0, // íîìåð ïîäîêíà
const int x=0, // êîîðäèíàòà ïî îñè X
const int y=0, // êîîðäèíàòà ïî îñè Y
const int width=50, // øèðèíà
const int height=18, // âûñîòà
const string text="Text", // òåêñò
const string font="Arial", // øðèôò
const int font_size=10, // ðàçìåð øðèôòà
const ENUM_ALIGN_MODE align=ALIGN_CENTER, // ñïîñîá âûðàâíèâàíèÿ
const bool read_only=false, // âîçìîæíîñòü ðåäàêòèðîâàòü
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // óãîë ãðàôèêà äëÿ ïðèâÿçêè
const color clr=clrBlack, // öâåò òåêñòà
const color back_clr=clrWhite, // öâåò ôîíà
const color border_clr=clrNONE, // öâåò ãðàíèöû
const bool back=false, // íà çàäíåì ïëàíå
const bool selection=false, // âûäåëèòü äëÿ ïåðåìåùåíèé
const bool hidden=true, // ñêðûò â ñïèñêå îáúåêòîâ
const long z_order=0) // ïðèîðèòåò íà íàæàòèå ìûøüþ
{
//--- ñáðîñèì çíà÷åíèå îøèáêè
ResetLastError();
//--- ñîçäàäèì ïîëå ââîäà
if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
{
Print(__FUNCTION__,
": íå óäàëîñü ñîçäàòü îáúåêò \"Ïîëå ââîäà\"! Êîä îøèáêè = ",GetLastError());
return(false);
}
//--- óñòàíîâèì êîîðäèíàòû îáúåêòà
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- óñòàíîâèì ðàçìåðû îáúåêòà
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- óñòàíîâèì òåêñò
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- óñòàíîâèì øðèôò òåêñòà
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- óñòàíîâèì ðàçìåð øðèôòà
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- óñòàíîâèì ñïîñîá âûðàâíèâàíèÿ òåêñòà â îáúåêòå
ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- óñòàíîâèì (true) èëè îòìåíèì (false) ðåæèì òîëüêî äëÿ ÷òåíèÿ
ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- óñòàíîâèì óãîë ãðàôèêà, îòíîñèòåëüíî êîòîðîãî áóäóò îïðåäåëÿòüñÿ êîîðäèíàòû îáúåêòà
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- óñòàíîâèì öâåò òåêñòà
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- óñòàíîâèì öâåò ôîíà
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- óñòàíîâèì öâåò ãðàíèöû
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïåðåìåùåíèÿ ìåòêè ìûøüþ
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- óñïåøíîå âûïîëíåíèå
return(true);
}
//+------------------------------------------------------------------+
//| Ñîçäàåò êíîïêè |
//+------------------------------------------------------------------+
void PrepareButtons()
{
//---
int x0=0;
int y0=0;
//---
CreateEdit("xcoord",ExtXCoordinateInfo,x0+8,y0+34,70,20);
CreateEdit("ycoord",ExtYCoordinateInfo,x0+78,y0+34,70,20);
CreateEdit("corner",ExtCornerInfo,x0+8,y0+54,140,20);
CreateEdit("align",ExtAlignInfo,x0+8,y0+74,140,20);
CreateEdit("read_only",ExtReadOnlyInfo,x0+8+140,y0+54,100,20);
CreateEdit("selectable",ExtSelectableInfo,x0+8+140,y0+74,100,20);
CreateButton("read_only",ExtReadOnlyButton,x0+250,y0+55,80,20);
CreateButton("selectable",ExtSelectableButton,x0+250,y0+75,80,20);
//---
CreateButton("corner_left_upper",ExtCornerLUButton,x0+10,y0+100,150,20);
CreateButton("corner_left_lower",ExtCornerLLButton,x0+10,y0+123,150,20);
CreateButton("corner_right_upper",ExtCornerRUButton,x0+163,y0+100,150,20);
CreateButton("corner_right_lower",ExtCornerRLButton,x0+163,y0+123,150,20);
//---
CreateButton("align_left",ExtAlignLButton,x0+10,y0+150,150,20);
CreateButton("align_center",ExtAlignCButton,x0+163,y0+150,150,20);
CreateButton("align_right",ExtAlignRButton,+x0+16+2*150,y0+150,150,20);
//---
CreateButton("dec_y",ExtCoordDecYButton,x0+413,y0+36,25,25);
CreateButton("inc_y",ExtCoordIncYButton,x0+413,y0+92,25,25);
CreateButton("inc_x",ExtCoordIncXButton,x0+441,y0+64,25,25);
CreateButton("dec_x",ExtCoordDecXButton,x0+385,y0+64,25,25);
//---
ExtCoordIncXButton.FontSize(15);
ExtCoordDecXButton.FontSize(15);
ExtCoordIncYButton.FontSize(15);
ExtCoordDecYButton.FontSize(15);
//---
ExtCoordIncXButton.Font("Wingdings");
ExtCoordDecXButton.Font("Wingdings");
ExtCoordIncYButton.Font("Wingdings");
ExtCoordDecYButton.Font("Wingdings");
//---
ExtCoordIncXButton.Description(CharToString(240));
ExtCoordDecXButton.Description(CharToString(239));
ExtCoordIncYButton.Description(CharToString(242));
ExtCoordDecYButton.Description(CharToString(241));
//--- ïîêàçûâàåì òåêóùèå ñâîéñòâà ñ èìåíåì InpName
ShowInfo(0,InpName);
}
//+------------------------------------------------------------------+
//| Ïîêàçûâàåò èíôîðìàöèþ î êîîðäèíàòàõ è ñâîéñòâàõ ïðèâÿçêè |
//+------------------------------------------------------------------+
void ShowInfo(const long chart_ID,const string name)
{
int current_corner=(int)ObjectGetInteger(chart_ID,name,OBJPROP_CORNER);
int current_align=(int)ObjectGetInteger(chart_ID,name,OBJPROP_ALIGN);
bool read_only=(bool)ObjectGetInteger(chart_ID,name,OBJPROP_READONLY);
bool selectable=(bool)ObjectGetInteger(chart_ID,name,OBJPROP_SELECTABLE);
//---
string sel="selectable=";
if(selectable) sel+="true"; else sel+="false";
ExtSelectableButton.State(selectable);
ExtSelectableInfo.Description(sel);
//---
string ro="read_only=";
if(read_only) ro+="true"; else ro+="false";
ExtReadOnlyButton.State(read_only);
ExtReadOnlyInfo.Description(ro);
//---
switch(current_corner)
{
case CORNER_LEFT_UPPER: ButtonPressed(ExtCornerLUButton,CORNER_BUTTON); break;
case CORNER_LEFT_LOWER: ButtonPressed(ExtCornerLLButton,CORNER_BUTTON); break;
case CORNER_RIGHT_LOWER: ButtonPressed(ExtCornerRLButton,CORNER_BUTTON); break;
case CORNER_RIGHT_UPPER: ButtonPressed(ExtCornerRUButton,CORNER_BUTTON); break;
}
//---
switch(current_align)
{
case ALIGN_LEFT: ButtonPressed(ExtAlignLButton,ALIGN_BUTTON); break;
case ALIGN_CENTER: ButtonPressed(ExtAlignCButton,ALIGN_BUTTON); break;
case ALIGN_RIGHT: ButtonPressed(ExtAlignRButton,ALIGN_BUTTON); break;
}
//---
int x=(int)ObjectGetInteger(chart_ID,name,OBJPROP_XDISTANCE);
int y=(int)ObjectGetInteger(chart_ID,name,OBJPROP_YDISTANCE);
//---
ExtXCoordinateInfo.Description(IntegerToString(x));
ExtYCoordinateInfo.Description(IntegerToString(y));
//---
ExtCornerInfo.Description(EnumToString(ENUM_BASE_CORNER(current_corner)));
ExtAlignInfo.Description(EnumToString(ENUM_ALIGN_MODE(current_align)));
}
//+------------------------------------------------------------------+
//| UnSelectButton |
//+------------------------------------------------------------------+
void UnSelectButton(CChartObjectButton &btn)
{
btn.State(false);
btn.BackColor(clrAliceBlue);
}
//+------------------------------------------------------------------+
//| Cîçäàåò êíîïêó (îáúåêò òèïà CChartObjectButton) |
//+------------------------------------------------------------------+
bool CreateButton(string text,CChartObjectButton &btn,int x0,int y0,int width,int height)
{
if(!btn.Create(0,"btn_"+text,0,x0,y0,width,height))
return(false);
btn.Font("Verdana");
btn.FontSize(7);
StringToUpper(text);
btn.Description(text);
btn.State(false);
UnSelectButton(btn);
//---
return(true);
}
//+------------------------------------------------------------------+
//| Cîçäàåò îáúåêò òèïà CChartObjectEdit |
//+------------------------------------------------------------------+
bool CreateEdit(string name,CChartObjectEdit &edit,int x0,int y0,int width,int height)
{
if(!edit.Create(0,"edt_"+name,0,x0,y0,width,height))
return(false);
edit.Font("Verdana");
edit.FontSize(7);
edit.BackColor(clrIvory);
edit.Description("");
edit.ReadOnly(true);
//---
return(true);
}
//+------------------------------------------------------------------+
//| UnselectButtons |
//+------------------------------------------------------------------+
void UnselectButtons(ENUM_BUTTON_TYPE buttontype)
{
switch(buttontype)
{
case ALIGN_BUTTON:
{
UnSelectButton(ExtAlignLButton);
UnSelectButton(ExtAlignCButton);
UnSelectButton(ExtAlignRButton);
break;
}
case CORNER_BUTTON:
{
UnSelectButton(ExtCornerLUButton);
UnSelectButton(ExtCornerLLButton);
UnSelectButton(ExtCornerRUButton);
UnSelectButton(ExtCornerRLButton);
break;
}
case COORD_BUTTON:
{
UnSelectButton(ExtCoordIncXButton);
UnSelectButton(ExtCoordDecXButton);
UnSelectButton(ExtCoordIncYButton);
UnSelectButton(ExtCoordDecYButton);
break;
}
}
}
//+------------------------------------------------------------------+
//| ButtonPressed |
//+------------------------------------------------------------------+
bool ButtonPressed(CChartObjectButton &btn,ENUM_BUTTON_TYPE buttontype)
{
UnselectButtons(buttontype);
//---
bool state=!btn.State();
btn.State(state);
if(state)
btn.BackColor(clrHoneydew);
else
btn.BackColor(clrAliceBlue);
//---
return(true);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---