Обсуждение статьи "Графические интерфейсы X: Выделение текста в многострочном поле ввода (build 13)" - страница 14

 
Konstantin:

В метод класса CTabs:

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

Непонятно, как Вы создали элемент типа CTabs, если в методе создания вкладок стоит проверка:

...
//--- Если нет ни одной вкладки в группе, сообщить об этом
   if(TabsTotal()<1)
     {
      ::Print(__FUNCTION__," > Вызов этого метода нужно осуществлять, "
              "когда в группе есть хотя бы одна вкладка! Воспользуйтесь методом CTabs::AddTab()");
      return(false);
     }
...

 
Anatoli Kazharski:

Не понятно, как Вы создали элемент типа CTabs, если в методе создания вкладок стоит проверка:

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

иногда проскакивает указанное сообщение, когда число вкладок == 0, но все работает без проблем

а вот если не добавить выделенное, то например при изменении размера главной формы, робот вываливается с ошибкой
 
Konstantin:

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

иногда проскакивает указанное сообщение, когда число вкладок == 0, но все работает без проблем

а вот если не добавить выделенное, то например при изменении размера главной формы, робот вываливается с ошибкой

Ок, детально буду смотреть после публикации следующей версии. Будут существенные изменения, которые позволят развивать библиотеку ещё быстрее и проще.
 
Anatoli Kazharski:

Ок, детально буду смотреть после публикации следующей версии. Будут существенные изменения, которые позволят развивать библиотеку ещё быстрее и проще.

Надеюсь структура библиотеки не претерпит изменений? 

Изменения о которых писали выше внесете все?

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

 
Konstantin:

1. Надеюсь структура библиотеки не претерпит изменений? 

2. Изменения о которых писали выше внесете все?

3. Есть один момент, который мне не нравится, библиотека завязана на каталог с рисунками, лучше бы этот каталог вставить внутрь каталога библиотеки, тогда ее можно было бы размещать в любом месте, к примеру работая с git приходится минимум в двух местах все менять.

1. Думаю, что для пользователя библиотеки заметно не будет. Все изменения и дополнения будут подробно описаны в статье.

2. Некоторые. Не всё сразу.

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

 

Подскажите как реализовывается работа с объектами класса CStandardChart по сжатию чарта мышью, с помощью шкалы цены, т.е. по вертикали как в обычном чарте терминала?

Насколько я понял, в библиотеке нет реализации данных событий мыши и нужно реализовывать их самому. В любом случае ни разу такого не делал, поэтому жду подсказки ))
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи...
 
Konstantin:

Подскажите как реализовывается работа с объектами класса CStandardChart по сжатию чарта мышью, с помощью шкалы цены, т.е. по вертикали как в обычном чарте терминала?

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

Именно так не пробовал, поэтому не смогу подсказать.

Могу предложить только такой вариант:

Нажатие на объектах-графиках генерируют событие с идентификатором ON_CLICK_SUB_CHART. В строковом параметре (sparam) содержится имя символа в объекте-графике. Принимайте сообщение с этим идентификатором в обработчике событий пользовательского класса, устанавливайте символ из сообщения в окне графика и пользуйтесь его готовым функционалом. 

 
Anatoli Kazharski:

Именно так не пробовал, поэтому не смогу подсказать.

Могу предложить только такой вариант:

Нажатие на объектах-графиках генерируют событие с идентификатором ON_CLICK_SUB_CHART. В строковом параметре (sparam) содержится имя символа в объекте-графике. Принимайте сообщение с этим идентификатором в обработчике событий пользовательского класса, устанавливайте символ из сообщения в окне графика и пользуйтесь его готовым функционалом. 

не получится на объектах OBJ_CHART реализовать такое (( 

При применении операций с графиками для объекта "График"  (OBJ_CHART) действуют следующие ограничения:

  • нельзя закрыть с помощью ChartClose();
  • нельзя поменять символ/период с помощью функции ChartSetSymbolPeriod();
  • не работают свойства CHART_SCALE, CHART_BRING_TO_TOP, CHART_SHOW_DATE_SCALE и CHART_SHOW_PRICE_SCALE (ENUM_CHART_PROPERTY_INTEGER).
 
Konstantin:

не получится на объектах OBJ_CHART реализовать такое (( 

Значит вариант, который предложил я, актуален. )
 
Anatoli Kazharski:
Значит вариант, который предложил я, актуален. )

не актуален, а не выполним, этот функционал не включен для данных объектов разработчиками MQ