Hello,
i have a problem that i can’t set the text for an OBJ_EDIT when being within chart event.
The goal: When the edit field is clicked, i want to set a new text. This is not working.
Please check the script. How to accomplish this ? Thank you
#property copyright "chinaski"
#property version "1.00"
#property strict
string edit_name="edit";
//+------------------------------------------------------------------+
int OnInit()
{
if(!ObjectCreate(0,edit_name,OBJ_EDIT,0,0,0))
{
Print("Failed. Error code = ",GetLastError());
return INIT_FAILED;
}
ObjectSetInteger(0, edit_name,OBJPROP_XDISTANCE,100);
ObjectSetInteger(0, edit_name,OBJPROP_YDISTANCE,100);
ObjectSetInteger(0, edit_name,OBJPROP_XSIZE,200);
ObjectSetInteger(0, edit_name,OBJPROP_YSIZE,60);
ObjectSetString(0, edit_name,OBJPROP_TEXT,"MY INIT TEXT");
// set text outside chart event
ObjectSetString(0, edit_name,OBJPROP_TEXT,"MY NEW TEXT");
return INIT_SUCCEEDED;
}
void OnDeinit(const int reason)
{
ObjectDelete(0,edit_name);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
switch(id)
{
case CHARTEVENT_KEYDOWN:
{
Print("CHARTEVENT_KEYDOWN");
}break;
case CHARTEVENT_MOUSE_MOVE:
{
Print("CHARTEVENT_MOUSE_MOVE");
}break;
case CHARTEVENT_OBJECT_CHANGE:
{
Print("CHARTEVENT_OBJECT_CHANGE");
}break;
case CHARTEVENT_OBJECT_DELETE:
{
Print("CHARTEVENT_OBJECT_DELETE");
}break;
case CHARTEVENT_CLICK:
{
Print("CHARTEVENT_CLICK");
}break;
case CHARTEVENT_OBJECT_CLICK:
{
PrintFormat("CHARTEVENT_OBJECT_CLICK");
if(sparam == edit_name)
{
// no error here but does not change text
if(ObjectSetString(0, edit_name,OBJPROP_TEXT,"MY CLICK TEXT") == false)
{
Print("error");
}
}
}break;
case CHARTEVENT_OBJECT_DRAG:
{
PrintFormat("CHARTEVENT_OBJECT_DRAG");
}break;
case CHARTEVENT_OBJECT_ENDEDIT:
{
PrintFormat("CHARTEVENT_OBJECT_ENDEDIT");
}break;
case CHARTEVENT_CHART_CHANGE:
{
PrintFormat("CHARTEVENT_CHART_CHANGE");
}break;
case (CHARTEVENT_CUSTOM+1):
{
PrintFormat("CHARTEVENT_CUSTOM");
}break;
default:
{
PrintFormat("default");
}break;
}
}