Элементы управления на графиках

 

Вопрос такой к общественности (если вдруг у кого есть готовый лисапед) - а удавалось кому-нибудь решить задачу размещения элементов управления на графике?

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

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

Есть ещё вариант попробовать отрисовать контролы ручками, но, честно говоря, не сильно-то хочется заморачиваться... Так что пока делаю как и все, кого я видел до этого - имитирую элементы управления стандартными оконными объектами - стрелками, линиями и т.д.

Есть у кого рабочий лисапед?

 

Подам мысль:
1. а зачем контролы должны находиться на окне МТ?
2. если не идет речь про С++/Dll - то вопрос изначально неправильный,
поскольку нужно подрубаться к оконной процедуре окошек МТ.
.
Я сделал вот так
https://www.mql5.com/ru/forum/120805
т.е. отдельное окно- под него отдельный UI поток.
.
PS: лучше иметь одно дополнительное окно, а не несколько.
В этом случае, кстати, меньше мороки с UI / потоками /
иниц / деиниц приложения.

 
Кстати, несложно сделать, чтобы при попытке закрыть МТ,
Dll, при наличии измененных данных в полях, спрашивала что-то типа
"Настройки изменены, сохранять?" / да/нет/отмена,
при "отмене" выход из МТ не происходит.
 
jartmailru:

Подам мысль:
1. а зачем контролы должны находиться на окне МТ?

Потому что оне именно там нужны...
jartmailru:

2. если не идет речь про С++/Dll - то вопрос изначально неправильный,
поскольку нужно подрубаться к оконной процедуре окошек МТ.

Ну DLL как-бы подразумевалась.

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

jartmailru:

Я сделал вот так
https://www.mql5.com/ru/forum/120805
т.е. отдельное окно- под него отдельный UI поток.

Не пойдёт, к сожалению. :( Отдельное-то окно сделать можно элементарно. Мне именно на самом графике нужен чекбокс или хотя-бы простая кнопка. А точнее - даже несколько.
 
jartmailru:
Кстати, несложно сделать, чтобы при попытке закрыть МТ,
Dll, при наличии измененных данных в полях, спрашивала что-то типа
"Настройки изменены, сохранять?" / да/нет/отмена,
при "отмене" выход из МТ не происходит.

Да нет - не та задача.

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

Как-то так...

 
Azzx:

а удавалось кому-нибудь решить задачу размещения элементов управления на графике?

давно удалось.

если просто - то выглядит вот так http://forextools.com.ua/trading/ticks/scalper.html если совсем красиво - то вот так http://forextools.com.ua/trading/buysell.html

чистый Win32API, никаких DLL, банальное отслеживание координат мыши в окне да проверка нажимаемых клавиш + небольшие извраты связанные с МТ4

 
f.t.:

давно удалось.

если просто - то выглядит вот так http://forextools.com.ua/trading/ticks/scalper.html если совсем красиво - то вот так http://forextools.com.ua/trading/buysell.html

чистый Win32API, никаких DLL, банальное отслеживание координат мыши в окне да проверка нажимаемых клавиш + небольшие извраты связанные с МТ4


Ок, спасибо, это, пожалуй, достаточно близко к тому, что я ищу...

Правда решения задачи размещения полноценных контролов там всё-таки нет. :(

 

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

Писать собственные контролы - как-то лень, тем более, что лично мне нужны всего-то два типа - кнопки и чекбоксы. Видимо, по этой причине это ещё никто и не делал. :)

 

Azzx:

нужны всего-то два типа - кнопки и чекбоксы. Видимо, по этой причине это ещё никто и не делал. :)

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

так что если вам красиво кодить охота - то Win32API вам в руки, а если торговать - вспомните про принцип KISS ;)

 
f.t.:

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

так что если вам красиво кодить охота - то Win32API вам в руки, а если торговать - вспомните про принцип KISS ;)


Мне надо чтобы красиво работать потом было. А вот что это можно красиво запрограммировать - чегой-то я сильно сомневаюсь. Во всяком случае - представления о красоте у меня другие.

Хотя насчёт засунуть своё окно, а поверх уже стандартных контролов -это интересная мысль, спасибо.

Действительно, наверное, лучше посмотреть в сторону Delphi - там этот геморрой можно будет с минимальными затратами нервов сделать. :)

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