Галерея UI написанных на MQL - страница 10

 

...Ну и напоследок сегодня, еще одна дерзость - копия окна настроек МЕ.


Здесь легче понять какое окно "не настоящее".))

 
Реter Konow #:

Да, конечно. Это не было проблемой.

Только не спрашивайте как, нифига не помню.)))

Николай ответит лучше.

Удивительно, ведь даже встроенная панель от MQ быстрой торговли наделена таким багом!

 
Aleksey Vyazmikin #:

Удивительно, ведь даже встроенная панель от MQ быстрой торговли наделена таким багом!

Нужно просто контролировать свойства объектов. Алгоритм должен знать над каким объектом находится курсор и какой объект в "фокусе". Меняем свойство объекта снизу чтобы не реагировал на курсор и клик. Вроде так, но могу ошибаться, потому что не помню. Прошло много лет.

 
Помню что мой алгоритм отключал прокрутку графика во время когда курсор находился над моим окном и я прокручивал в нем что то. Потом, когда курсор возвращался на свободное пространство графика, алгоритм снова включал прокрутку.
 
Реter Konow #:
Помню

А посмотреть уже нельзя?

 
Aleksey Vyazmikin #:

А посмотреть уже нельзя?

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

 
Реter Konow #:

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

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

 
Aleksey Vyazmikin #:

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

Я боюсь что если залезу в архив, то галерея никогда не кончится, lol.))) Там же конструктор, а на нем очень легко создавать новые окна. А вдруг еще визуальный редактор захочется доделать... Тогда на месяцы застряну, а зачем?)))

 
Aleksey Vyazmikin #:

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

Насчет комментариев полностью согласен. Обязательно нужно писать пояснения к коду.

 
Aleksey Vyazmikin #:
я вот совсем не имею опыта разработки таких интерфейсов, но то, что использовал из разных источников имели существенный недостаток, а именно через них иногда(!) прокликивались другие объекты на чарте. Смогли ли решить эту проблему?

Мои интерфейсы, разумеется, были существенно проще. Я не использовал Canvas а просто строил панель из стандартных элементов управления. Чтобы другие объекты на чарте не просвечивали через них, я перерисовывал все компоненты окна раз в минуту:

if (iTime(_Symbol,PERIOD_M1,0) > LastMinute && !IsTesting()) { 
   LastMinute = iTime(_Symbol,PERIOD_M1,0);
   for (int i = 0; i < 45 ; i++) {
      long tf = ObjectGetInteger(0, Controls[i], OBJPROP_TIMEFRAMES);
      if (ObjectSetInteger(0, Controls[i], OBJPROP_TIMEFRAMES, -1)) 
         ObjectSetInteger(0, Controls[i], OBJPROP_TIMEFRAMES, tf);
   }
}

Здесь Controls — массив, содержащий имена компонентов.