Обсуждение статьи "Как создать графическую панель любой сложности и как это работает" - страница 9

 
Vasiliy Pushkaryov:
Пока не сталкивался. Не знаю. Станислав в 27-м посте этой ветки отвечает на один из вопросов, там и Disable стандартной библиотеки затрагивается, посмотрите.

применил метод Visible()

дышит как мне надо

ну и очередное спасибо MQ за MQL, есессно

ну всё может и реализуемо, любые фантазии ;)
 

Привет вам двоим,

Я не могу достаточно часто благодарить вас обоих. Я часто натыкался здесь на совершенно никудышный программный код и благодаря вашей критике сэкономил себе кучу времени на поиски смысла такого программирования.
Есть ли где-нибудь толковое описание полного синтаксиса MQL, переведенное на немецкий?

Die Ersetzung des CWndContainer
Die Ersetzung des CWndContainer
  • www.mql5.com
Diese Datei ersetzt die originale Datei WndContainer.mqh. Er verhindert die Veränderung des Charts beim Druck und bei der Haltung der Maus-Taste innerhalb im Bereichs des Containers.
 
Joosy:

Привет вам двоим,

Я не могу достаточно часто благодарить вас обоих. Я часто натыкался здесь на совершенно никудышный программный код и благодаря вашей критике сэкономил себе кучу времени на поиски смысла такого программирования.
Есть ли где-нибудь толковое описание полного синтаксиса MQL, переведенное на немецкий?

  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/ru/docs/function_indices
    Это список, в котором можно искать ключевые слова с помощью Ctrl+F в соответствии с девизом, как назывался...
  3. В редакторе можно навести курсор на MQL5-функцию и нажать F1, чтобы перейти непосредственно к документации по этой функции, некоторые с примерами...
 
Carl Schreiber:
  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/ru/docs/function_indices
    Это список, в котором вы можете искать ключевые слова с помощью Ctrl+F по девизу: "Что за имя опять...".
  3. В редакторе можно навести курсор на MQL5-функцию и нажать F1, чтобы перейти непосредственно к документации по этой функции, в том числе с примерами...
В принципе, я знаю документацию. Однако меня в очередной раз вдохновили приведенные вами ссылки на обзорный дисплей. С этой точки зрения это совсем другой подход.
Спасибо!
 
Joosy:
В принципе, я знаю документацию. Однако меня снова вдохновили приведенные вами ссылки на обзорный дисплей. С этой точки зрения это другой подход.
Спасибо!

Я также пробовал панели, но это не совсем работает для меня, потому что это всегда в окне графика.

Теперь я перешел и поместил все это в окно индикатора, которое у меня всегда находится внизу графика

 

мда, чтобы создать панель нужно разобраться в десятках строк кода и потом самому навоять десятки и более... Ожидалось, что функционал уже реализован, который выбирается или включается (Enable), но - нет!!

при все уважении, но от простого к сложному я не увидел.  Пойду рисовать квадраты и заворачивать в свои обвертки.

PS: файлы к статьям лучше выкладывать отдельно - доступен просмотр в браузере.

[Удален]  

Здравствуйте, Владимир,


Большое спасибо за статью, она очень полезная. Я просто хотел узнать некоторые моменты по изменению цвета объектов m_client_area и m_background:

   int total=AppWindow.ControlsTotal();
   CWndClient*myclient;
   for(int i=0;i<total;i++)
     {
      CWnd*obj=AppWindow.Control(i);
      string name=obj.Name();
      PrintFormat("%d is %s",i,name);
      //--- цвет 
      if(StringFind(name,"Client")>0)
        {
         CWndClient *client=(CWndClient*)obj;
         client.ColorBackground(clrRed);
         myclient=client;
         Print("client.ColorBackground(clrRed);");
         ChartRedraw();
        }
      //---
      if(StringFind(name,"Back")>0)
        {
         CPanel *panel=(CPanel*) obj;
         panel.ColorBackground(clrGreen);
         Print("panel.ColorBackground(clrGreen);");
         ChartRedraw();
        }
     }

Выделенные части - это те пункты, в которых я не был уверен. Я понимаю, что делает весь код, но не уверен, как он это делает. Я не был уверен в двух кодах ниже:


1. Обращается ли он к файлу Control, например WndClient.mqh, и для чего нужен *.

CWndClient *client=(CWndClient*)obj;

2. Я понял, что obj - это, вероятно, объект, а name - это имя объекта. Однако если я помещу obj.Name(); в любой другой код, он не поймет его, поэтому я знаю, что он уникален для чего-то сверху. Я просто не был уверен, как он вписывается.

obj.Name();


Буду признателен, если у вас найдется время ответить, и заранее благодарю вас.

 
ctrading :

***

2. Я понял, что obj - это, вероятно, объект, а name - это имя объекта. Однако если я помещу obj.Name(); в любой другой код, он его не поймет, так что я знаю, что он уникален для чего-то сверху. Я просто не был уверен, как он вписывается.

obj.Name();

***

Переменная obj живет только в течение одной итерации цикла for .

 

Большое спасибо за вашу статью!

Я начинающий программист и пытаюсь создать более сложную панель.

Я застрял на несколько дней, чтобы создать CLabel и CButton в заголовке класса.

Так как я буду использовать много меток с одинаковым текстом, например, "тире".

Я пытаюсь найти какой-то цикл или массив для создания множества меток в заголовке класса (private):

class CTradePanel : public CAppDialog
  {
private:
   
   CLabel            dashs[100];   //Создайте множество точек на панели
  }


Как я могу заполнить массив "метками"?

Моя идея заключается в том, что после этого я вызову какую-нибудь функцию ниже:

for(int i=0 ; i<100 ; i++)
      {
       string dash_name = "dash_"+IntegerToString(i);
       if(!CreateLabel(chart,subwin,dash_name,"-",5*i,5*i))
         {
          return false;
         }
      }

Но она возвращает ошибку: "'dash_name' - преобразование параметров недопустимо".

Как я могу заполнить массив "CLabel", а затем использовать эти "метки" в циклической функции?

Кто-нибудь может мне помочь?

 
Guilherme Mendonca :

Большое спасибо за вашу статью!

Я начинающий программист и пытаюсь создать более сложную панель.

Я застрял на несколько дней, чтобы создать CLabel и CButton в заголовке класса.

Поскольку я буду использовать много меток с одинаковым текстом, например, "тире".

Я пытаюсь найти какой-то цикл или массив для создания множества Label в заголовке класса (private):


Как заполнить массив "метками"?

Моя идея заключается в том, что после этого я буду вызывать какую-то функцию ниже:

Но она возвращает ошибку: "'dash_name' - преобразование параметра недопустимо".

Как я могу заполнить массив "CLabel", а затем использовать эти "метки" в циклической функции?

Кто-нибудь может мне помочь?

Вам нужно подключить класс CArrayObj. И действовать по примеру из справки.

Documentation on MQL5: Standard Library / Data Collections / CArrayObj
Documentation on MQL5: Standard Library / Data Collections / CArrayObj
  • www.mql5.com
CArrayObj - Data Collections - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5