Смена OBJ_BITMAP_LABEL при смене фона терминала - страница 4

 
Ihor Herasko:

Для этого случая:

Тут две ошибки:

  1. У объекта Label нет свойства OBJPROP_BMPFILE. Поэтому и нет смысла устанавливать такому объекту это свойство.
  2. Black и White (в новой версии MQL обозначаются как clrBlack и clrWhite соответственно) - это цвета, а не строки.

А здесь нужно так:

Заменил строчку 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

на

   ObjectSetInteger(chart_ID, name, OBJPROP_COLOR, (clrNewColor ==  C'0,0,0')? clrWhite : clrBlack); 

появилась ошибка:

'clrNewColor' - undeclared identifier	text.mq4	1310	53

я сверху сделал так:

color clrNewColor;

ошибка ушла, далее исправил тут:

   LabelCreate(0,"label0",0,233 + dimaX,1,CORNER_LEFT_UPPER,"Статистика","Tahoma",8, clrWhite ?0: clrBlack,0.0,ANCHOR_LEFT_UPPER,false,false,true,0);

Ошибки нету, но и не работает

пожалуйста посмотрите

 
ares96:

Ошибки нету, но и не работает


Вы просто объявили переменную clrNewColor. А присвоить ей нужное значение - цвет фона? Конечно, не будет работать.

 
Ihor Herasko:


Вы просто объявили переменную clrNewColor. А присвоить ей нужное значение - цвет фона? Конечно, не будет работать.

Он в первом сообщении ясно выразился ,"хочу найти решение".
А ты его програмираванию учишь, уже 4ю страницу, просто перечитай тему сначала.
 
Aleksei Beliakov:
Он в первом сообщении ясно выразился ,"хочу найти решение".
А ты его програмираванию учишь, уже 4ю страницу, просто перечитай тему сначала.

Я уже догадался, что человек далек от программирования. Поэтому перестал давать код напрямую, только общими словами. Возможно, это сподвигнет его на учебу. Ну а нет, так нет. Не всем же быть программистами.

 
Ihor Herasko:

Я уже догадался, что человек далек от программирования. Поэтому перестал давать код напрямую, только общими словами. Возможно, это сподвигнет его на учебу. Ну а нет, так нет. Не всем же быть программистами.

Я потерял доступ к своей прошлой странички, поэтому долго не отвечал.
Ребят почему вы все на меня накинулись, что я такого сделал? Далёк? ну да, я пытаюсь изучать программирование уже около года, начинал с книжек и статей, решил что лучше всего это пытаться написать простенький(ну может не простенький для меня) индикатор. А вы все накинулись что я ничего не знаю, может вы все и правы, но а кто из нас родился умным? вот вы написали код на смену картинки, я уже повторить могу для других кнопок. емае, чего так сразу то...  посоветуйте тогда как лучше изучать данный язык, просто повторюсь, мне так легче познавать его

 
vebster005:

Я потерял доступ к своей прошлой странички, поэтому долго не отвечал.
Ребят почему вы все на меня накинулись, что я такого сделал? Далёк? ну да, я пытаюсь изучать программирование уже около года, начинал с книжек и статей, решил что лучше всего это пытаться написать простенький(ну может не простенький для меня) индикатор. А вы все накинулись что я ничего не знаю, может вы все и правы, но а кто из нас родился умным? вот вы написали код на смену картинки, я уже повторить могу для других кнопок. емае, чего так сразу то...  посоветуйте тогда как лучше изучать данный язык, просто повторюсь, мне так легче познавать его

Спокойно. Никто ни на кого не накинулся. Здесь принято помогать начинающим программистам, но не писать за них коды.

Тот момент, на котором мы с Вами остановились (тернарный оператор) - это основы программирования. Если Вы еще не усвоили, как работают условные операторы, то говорить о том, что Вы что-то познаете, нельзя. Это обычное копирование в надежде, что при каких-то перестановках что-то выйдет без понимания смысла. При таком подходе вероятность того, что Ваша программа станет работать правильно, точно такая же, как если бы взяли буквы алфавита в нужном количестве, рассыпав их, и получилась бы "Война и Мир".

 
Ihor Herasko:

Спокойно. Никто ни на кого не накинулся. Здесь принято помогать начинающим программистам, но не писать за них коды.

Тот момент, на котором мы с Вами остановились (тернарный оператор) - это основы программирования. Если Вы еще не усвоили, как работают условные операторы, то говорить о том, что Вы что-то познаете, нельзя. Это обычное копирование в надежде, что при каких-то перестановках что-то выйдет без понимания смысла. При таком подходе вероятность того, что Ваша программа станет работать правильно, точно такая же, как если бы взяли буквы алфавита в нужном количестве, рассыпав их, и получилась бы "Война и Мир".

да вы правы, постараюсь изучить тернарный оператор, спасибо вам за всё! Правда, спасибо огромное

 
Ihor Herasko:

Спокойно. Никто ни на кого не накинулся. Здесь принято помогать начинающим программистам, но не писать за них коды.

Тот момент, на котором мы с Вами остановились (тернарный оператор) - это основы программирования. Если Вы еще не усвоили, как работают условные операторы, то говорить о том, что Вы что-то познаете, нельзя. Это обычное копирование в надежде, что при каких-то перестановках что-то выйдет без понимания смысла. При таком подходе вероятность того, что Ваша программа станет работать правильно, точно такая же, как если бы взяли буквы алфавита в нужном количестве, рассыпав их, и получилась бы "Война и Мир".

Примерно так должно получиться


 
Ihor Herasko:

Нужно вместо белого цвета поставить тернарный оператор, который и является условием применения белого или черного цвета. Раз мы с Вами говорим о таких вещах, как события и их обработка, то с такой элементарной вещью, как тернарный оператор Вы должны быть знакомы.

P. S. В моем предыдущем сообщении (и даже в текущем) автоматически вставлена ссылка на описание тернарного оператора.

пожалуйста объясните почему не работает, логику как я думаю я понял, но сейчас не отображается вообще label

      color clrNewColor1 = color(ChartGetInteger(0, CHART_COLOR_BACKGROUND));  // тут мы задаем переменную на фон и считываем её
      if (clrNewColor1 != g_clrOldColor1) // тут сравниваем
      {
         color strFileCL1 = (clrNewColor1 ==  C'0,0,0')? Black : White;  // если фон черный тогда 1 цвет, иначе 2-й цвет

   LabelCreate(0,"label0",0,233 + dimaX,1,CORNER_LEFT_UPPER,"Статистика","Tahoma",8, clrNewColor1 ?0: clrBlack,0.0,ANCHOR_LEFT_UPPER,false,false,true,0);  //ставим переменную
     
         ChartRedraw();
         g_clrOldColor1 = clrNewColor1;
      }
 
vebster005:

пожалуйста объясните почему не работает, логику как я думаю я понял, но сейчас не отображается вообще label

Метка отображается, но ее не видно. Посмотрите в списке объектов (Ctrl+B) - она есть.

В коде указано, что если цвет фона черный, то сделать цвет метки черным, а если белый фон, то сделать цвет метки белым. А нужно то наоборот.

Причина обращения: