Все созданные объекты имеют приоритет ниже объектов графика (sl/tp, ордера и т.д. ) - страница 3

 

Вы же предложили вот что, и это всего один подвальный индикатор, а графика уже половины нет!


 
Ihor Herasko:

Я именно о торговой панели и говорю. Какой смысл размещать её на графике? Это ошибка абсолютного большинства панелей. Совершенно неудобно, т. к. закрывает информационное пространство. Торговая панель должна быть вынесена на отдельный график и управлять всеми другими графиками. Таким образом, проблема кроется в эргономической ошибке разработчиков таких панелей, а не в чем-то другом.

При учёте того, что описано мною выше, этот довод теряется.

Панель может быть перемещаемой, сворачиваемой, либо одновременно и перемещаемой, и сворачиваемой.

Если она в подокне, то уже нет никакого выбора кроме как подокно уменьшать по вертикали (если панель даст это сделать).

 
Vitaly Muzichenko:

Это малая часть того, что должно быть на графике где-то в углу, чтоб не отнимало пространство для цены



Это уже не совсем торговая панель. Это информационные объекты на графике. Если от них требуется какое-то воздействие (нажатие, ввод информации и т.д.), то на ценовом графике их размещать нельзя. В крайнем случае - где-то в углу, чтобы не было описываемой проблемы. Иначе - милости просим в отдельное окно.

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

 
Ihor Herasko:


Это уже не совсем торговая панель. Это информационные объекты на графике. Если от них требуется какое-то воздействие (нажатие, ввод информации и т.д.), то на ценовом графике их размещать нельзя. В крайнем случае - где-то в углу, чтобы не было описываемой проблемы. Иначе - милости просим в отдельное окно.

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

Вы наверное не понимаете всего вышесказанного. ЗАЧЕМ мне нужна панель или инфо-окно в отдельном графике, чтоб закрыть часть и без того маленького графика?

Вот один из примеров, где просто не приемлемо делать в отдельном подокне, потому что умным после этого никто не назовёт.

Ах да, и она даже не поместилась по высоте на графике в полностью развёрнутом виде.

 

Похоже, задача решаема. Сквозь торговую панель мышь линии игнорирует.

   Но тут курсор в виде руки. Вот в чем дело!

 
LRA:

Похоже, задача решаема. ...

Примерно вот так:

//+------------------------------------------------------------------+
//| Установим состояние графика                                      |
//+------------------------------------------------------------------+
void CWindow::SetChartState(const int subwindow_number)
  {
//--- Если (курсор в области панели и кнопка мыши отжата) или
//    кнопка мыши была нажата внутри области формы или заголовка
   if((CElement::MouseFocus() && m_clamping_area_mouse==NOT_PRESSED) || 
      m_clamping_area_mouse==PRESSED_INSIDE_WINDOW ||
      m_clamping_area_mouse==PRESSED_INSIDE_HEADER)
     {
      //--- Отключим скролл и управление торговыми уровнями
      m_chart.MouseScroll(false);
      m_chart.SetInteger(CHART_DRAG_TRADE_LEVELS,false);
     }
//--- Включим управление, если курсор вне зоны окна
   else
     {
      m_chart.MouseScroll(true);
      m_chart.SetInteger(CHART_DRAG_TRADE_LEVELS,true);
     }
  }

//---

Подробности читайте в серии статей о графических интерфейсах: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1)

 
Anatoli Kazharski:

Примерно вот так:

//---

Подробности читайте в серии статей о графических интерфейсах: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1)


      m_chart.MouseScroll(false);
      m_chart.SetInteger(CHART_DRAG_TRADE_LEVELS,false);

Ну блин, это-же не выход, хотя работает и иногда применяю. Не всегда нужно чтоб уровни не перетягивались, многое зависит от стиля торговли.
 
Vitaly Muzichenko:
Ну блин, это-же не выход, хотя работает и иногда применяю. Не всегда нужно чтоб уровни не перетягивались, многое зависит от стиля торговли.
Читайте внимательней:
//--- Если (курсор в области панели и кнопка мыши отжата) или
//    кнопка мыши была нажата внутри области формы или заголовка

//---

И при чём здесь Вы? Это то, о чём спрашивает автор темы. И так понятно, что каждый сделает так, как ему нужно.

 
Anatoli Kazharski:
Читайте внимательней:

//---

И при чём здесь Вы? Это то, о чём спрашивает автор темы. И так понятно, что каждый сделает так, как ему нужно.

//--- Если (курсор в области панели и кнопка мыши отжата) или
//    кнопка мыши была нажата внутри области формы или заголовка

Да, упустил это. Извиняюсь!

 
Vitaly Muzichenko:

Вы наверное не понимаете всего вышесказанного. ЗАЧЕМ мне нужна панель или инфо-окно в отдельном графике, чтоб закрыть часть и без того маленького графика?

Давайте определимся, о чём говорим: о панели или об объектах на ценовом графике? Выше указано, что торговая панель не должна размещаться на ценовом графике. Более того, она не должна размещаться на каком-либо графике ибо место занимает. Для нее выделяется отдельное окно, из которого производится  управление всеми остальными графиками. С объектами, размещаемыми на графике, та же история. Либо они носят исключительно информационный характер, либо располагаются так, чтобы не мешали выводу другой информации на графике.

Вот один из примеров, где просто не приемлемо делать в отдельном подокне, потому что умным после этого никто не назовёт.

Конечно, глупость. Вы просто не подумали. От того и вышел такой вот глупый пример.


Ах да, и она даже не поместилась по высоте на графике в полностью развёрнутом виде.

Заведите для панели отдельный график (сам ценовой график - убрать) и все там поместится.