Обсуждение статьи "Графические интерфейсы XI: Рефакторинг кода библиотеки (build 14.1)"

 

Опубликована статья Графические интерфейсы XI: Рефакторинг кода библиотеки (build 14.1):

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

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

Рис. 12. Графический интерфейс тестового MQL-приложения.

Автор: Anatoli Kazharski

 

Спасибо Анатолий!
Очень ждал этого обновления.
Невероятная работа!
Низкий поклон Вам и MetaQuotes Software Corp.


 

я так понимаю пользовательский интерфейс библиотеки изменился?

 

Excellent Work!

I was waiting for a very long time for an update like this. 

Someone need to translate it ASAP!

 
Konstantin:

я так понимаю пользовательский интерфейс библиотеки изменился?

Будет ещё одна статья от этого обновления (14.2). Дождитесь публикации. Все изменения и дополнения подробно описаны. 
 
Anatoli Kazharski:
Будет ещё одна статья от этого обновления (14.2). Дождитесь публикации. Все изменения и дополнения подробно описаны. 

Очень ждем :) Изменения просто колоссальные, но к сожалению не все в лучшую сторону...

Ну или пока плохо разобрался. Ждем, читаем, разбираемся :)

 
Oleksii Chepurnyi:

...

Изменения просто колоссальные, но к сожалению не все в лучшую сторону...

Например?
 
Anatoli Kazharski:
Например?

В порядке важности :)

1. SpinEdit, который сейчас CTextEdit. Раньше кликаем в поле ввода, выделяется текст, вбиваем новое значение, энтер. Сейчас кликаем, просто ставится курсор, мышкой никак не выделяется, и не реагирует на цифровую клавиатуру. Ну а String вместо Double, даже не знаю хорошо или плохо... Переделаем - посмотрим :)

2. ComboBox. Выпадающий список использую небольшой, полоса прокрутки не нужна. Убрать ее получилось только прилично увеличив высоту списка, где-то на высоту одного пункта списка.

3. Перерисовка при переинициализации сильно выросла. Одно маленькое окошко (~25 элементов) при смене ТФ исчезает на ~200мс. Раньше это было практически незаметным.

PS Интуитивно хочется свернуть/развернуть окно двойным кликом :) Может это реализовано в библиотеке, просто я не нашел?

 
Oleksii Chepurnyi:

...

1. SpinEdit, который сейчас CTextEdit. Раньше кликаем в поле ввода, выделяется текст, вбиваем новое значение, энтер. Сейчас кликаем, просто ставится курсор, мышкой никак не выделяется, и не реагирует на цифровую клавиатуру. Ну а String вместо Double, даже не знаю хорошо или плохо... Переделаем - посмотрим :)

2. ComboBox. Выпадающий список использую небольшой, полоса прокрутки не нужна. Убрать ее получилось только прилично увеличив высоту списка, где-то на высоту одного пункта списка.

3. Перерисовка при переинициализации сильно выросла. Одно маленькое окошко (~25 элементов) при смене ТФ исчезает на ~200мс. Раньше это было практически незаметным.

...

Ок, посмотрю. 

Oleksii Chepurnyi:

...

PS Интуитивно хочется свернуть/развернуть окно двойным кликом :) Может это реализовано в библиотеке, просто я не нашел?


Пока нет. 

 

Сжатие кода, универсализация классов и качественный шаг вперед в технологии. Наконец то я это увидел. Хорошо. 


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


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

Второе,  - у  рисованного обьекта нельзя установить свойство Zorder (здесь, кажется, Вы нашли выход).


Далее, еще очень много трудностей... 


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

 
Реter Konow:

Сжатие кода, универсализация классов и качественный шаг вперед в технологии. Наконец то я это увидел. Хорошо. 


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


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

Второе,  - у  рисованного обьекта нельзя установить свойство Zorder (здесь, кажется, Вы нашли выход).


Далее, еще очень много трудностей... 


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

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