Discussion of article "Graphical Interfaces X: Updates for the Rendered table and code optimization (build 10)"

 

New article Graphical Interfaces X: Updates for the Rendered table and code optimization (build 10) has been published:

We continue to complement the Rendered table (CCanvasTable) with new features. The table will now have: highlighting of the rows when hovered; ability to add an array of icons for each cell and a method for switching them; ability to set or modify the cell text during the runtime, and more.

Below is the result of the work done:

 Fig. 3. Demonstration of new features of the rendered table.

Fig. 3. Demonstration of new features of the rendered table.

Author: Anatoli Kazharski

 
Interesting additions to the drawing table. To be honest, I was expecting somewhat different things from this article. No, I am not disappointed at all (on the contrary), I was just wrong in my assumptions as usual.

I thought that if you had switched to the implementation of a drawn interface, you would outline its concept, formulate its ideology, describe the new technology. I thought you would start with redoing the previously created functionality....

However, this is not happening at the moment. You haven't formulated the concept of the drawn GUI yet and haven't started the global redesign. Perhaps, this global redesign will be gradual, from article to article, and not revolutionary, as I imagined. That's why I say I was wrong in my expectations.

You are surprisingly avoiding any global redesign in the library, which is very strange to me.

I would define this style of development as follows: "Development is a gradual expansion in a plane where each local problem is solved by its own local method. Universalisation, generalisation and compression of solutions do not apply. Large-scale revolutionary changes are unfavourable. It is worthwhile to adhere to generally accepted standards and styles and not to conflict with them. ".

My style of development: "Development is a gradual universalisation, which leads to the fact that the solution of new local tasks is carried out not at the level of methods, but at the level of individual lines within methods. And even then, not always. There are far fewer new entities arising, and the old mechanisms are becoming more and more refined. There is a gradual acceleration of new local tasks. Global redesigns are difficult and inevitable, but necessary."

In the next articles I will wait for your concept of drawing interface technology to compare it with mine.

P.S. By the way, if you are interested, I can outline it.

Good luck.
 
I would add to my concept of development: - "In the name of absolute efficiency, sacrificing conventional approaches, standards and styles is justified. They can be ignored, broken and changed if they stand in the way of free creative development.".
 
Реter Konow:
...

Perhaps this global redistribution will be gradual, from article to article, rather than revolutionary as I had imagined.

...


Yes. Exactly.
 
@Anatoli Kazharski I would like to clarify, what is the code optimisation? I ask because compilation with connected libraries sometimes takes up to 20 seconds. Or should it be so?
 
Alexander Fedosov:
@Anatoli Kazharski I would like to clarify, what is the code optimisation? I ask because compilation with connected libraries sometimes takes up to 20 seconds. Or should it be so?


In your case, while developing your MQL-application, set the Optimize parameter in the"MetaTrader 5/Config/metaeditor.ini" file to zero, as shown below:

...
[Experts]
Author=Copyright 2015, MetaQuotes Software Corp.
Address=http://www.mql5.com
Optimize=0
...

//---

Then everything will compile quickly:

0 error(s), 0 warning(s), compile time: 351 msec                1       1

//---

That's not what the article meant. In some cases, it means increasing performance, and in some cases it means partial universalisation (packing repetitive code fragments into separate methods and placing them into a separate class).

 
For some reason, none of the Article 10 Expert Advisors stays on the chart, and after a few seconds, having shown only a shape, it is removed from the chart by itself. In the log it says "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Deleting the Expert subwindow causes the Expert to be deleted!" and further "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . What is the reason?


 
Alexander:
For some reason, none of the Article 10 Expert Advisors stays on the chart, and after a few seconds, having shown only the shape, it is removed from the chart by itself. In the log it says "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Deleting the Expert subwindow causes the Expert to be deleted!" and further "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . What is the reason?

I have checked again all possible situations (that I know of) when this could happen, but failed to reproduce it.

Do both test Expert Advisors from the article show this behaviour or only TestLibrary10 ? What do the test experts from other articles show ?

 
Anatoli Kazharski:

I have checked again all possible situations (that I know of) when this could happen, but failed to reproduce it.

Do both test experts from the article show this behaviour or only TestLibrary10 ? And the test Expert Advisors from other articles, what do they show ?


All the EAs from the Article 10 folder show this behaviour, i.e. from TestLibrary7 to TestLibrary10.
 
Alexander:

This behaviour is shown by all EAs from the Article 10 folder i.e. from TestLibrary7 to TestLibrary10.
Reproduced. The problem occurs when there are indicators in subwindows on the chart. This behaviour did not occur before. I will look into it. Thank you for your message.
 
Anatoli Kazharski:
Reproduced. The problem occurs when the chart has indicators in subwindows. There was no such behaviour before. I will look into it. Thanks for the message.

When I commented in the MainWindow.mqh file of the TestLibrary07 Expert Advisor 2 lines 22 and 23 //m_window.AutoXResizeMode(true); and //m_window.AutoYResizeMode(true); then this Expert Advisor started working normally for some reason.