Создание нескольких объектов одной функцией. - страница 2

 
FXwin:

Покажите как прописано в старте Color_Button(

Color_Button("pRed",620,50,51,41,"Red",623,53,45,35,Red);

   Color_Button("pBlue",700,50,51,41,"Blue",703,53,45,35,Blue);


Эти функции прописаны внутри функции  OnTimer(); .  Я пишу индикатор.

 
FXwin:

Покажите как прописано в старте Color_Button(

//+------------------------------------------------------------------+
//|    Функция создания кнопок для выбора цвета                      |
//+------------------------------------------------------------------+ 
   void Color_Button(const string P_But,const int xp_but,const int yp_but,const int xp_size,const int yp_size,
                  const string C_But,const int xc_but,const int yc_but,const int xc_size,const int yc_size,
                  const color col_or)                                  //Сюда входит 11 параметров.
   {

Вот параметры в самом начале.

 
Yuriy Vins:
Ах да. Забыл сказать. Функция создает сразу два объекта. Две кнопки. Одна внутри другой. Может из за этого проблемы ? Хотя не должно..

Вы создаёте в функции кнопку с постоянным именем:

ObjectCreate(0,"P_But",OBJ_BUTTON,0,0,0);

Уберите здесь кавычки с P_But (во входных параметрах функции же у вас прописано имя: const string P_But), но вы его не используете, а жёстко задаёте имя при создании объекта.

 
Вместо P_But и C_But я подставляю имена типа стринг
 
Yuriy Vins:
Вместо P_But и C_But я подставляю имена типа стринг
Ещё раз повторю: у вас в коде функции жёстко приписано одно имя. То имя, которое вы передаёте через параметры, оно не используется.
 
Artyom Trishkin:
Ещё раз повторю: у вас в коде жёстко приписано одно имя. То имя, которое вы передаёте через параметры, оно не используется.

Сейчас попробую!

 
Yuriy Vins:

Сейчас попробую!

В ObjectCreate() уберите кавычки с имени объекта, и впишите туда переменную, через которую передаёте имя в функцию:

ObjectCreate(0,P_But,OBJ_BUTTON,0,0,0);
 
Все Ребят, получилось! Целых два часа потерял на решение этой заморочки.......
 
Спасибо Вам огромное! Как закончу эту функцию, выложу для общего пользования. ))
 
void deinit(){
   ObjectDelete("pRed1");
   ObjectDelete("pRed2");
   ObjectDelete("pBlue1");
   ObjectDelete("pBlue2");
return;}
//------------+
void OnTimer(){

   Color_Button("pRed1",620,50,51,41,Red);
   Color_Button("pRed2",623,53,45,35,Red);
   
   Color_Button("pBlue1",700,50,51,41,Blue);
   Color_Button("pBlue2",703,53,45,35,Blue);
   
return;} 
//+------------------------------------------------------------------+
//|    Функция создания кнопок для выбора цвета                      |
//+------------------------------------------------------------------+ 
   void Color_Button(string name,int x_but,int y_but,int x_size,int y_size,color col)
   {
    //Создаем псевдокнопку//
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0); 
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x_but);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y_but);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,x_size);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,y_size);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,col);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,ChartBackColorGet(0));
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(0,name,OBJPROP_BACK,false);}