Diskussion zum Artikel "Grafische Interfaces X: Erweitertes Management von Listen und Tabellen Code Optimierung (build 7)"
Veröffentlichter Artikel Graphical Interfaces X: Erweiterte Listen- und Tabellenverwaltung. Code-Optimierung (Build 7):
Autor: Anatoli Kazharski
Auf was muss man zugreifen, um das Gleiche mit der Combobox-Liste zu tun, es funktioniert nicht so:
if(id==CHARTEVENT_CUSTOM+..){
m_combobox_sm.Clear();
m_combobox_sm.ItemsTotal(4);
m_combobox_sm.VisibleItemsTotal(4);
string items_text[4]={"FALSE","item 1/0","item 2/0","item 3/0"};
for(int i=0; i<4; i++){m_combobox_sm.SetItemValue(i,items_text[i]);}
}
Was zugreifen, um das gleiche mit der Liste der Combobox zu tun, es funktioniert nicht so:
if(id==CHARTEVENT_CUSTOM+..){
m_combobox_sm.Clear();
m_combobox_sm.ItemsTotal(4);
m_combobox_sm.VisibleItemsTotal(4);
string items_text[4]={"FALSE","item 1/0","item 2/0","item 3/0"};
for(int i=0; i<4; i++){m_combobox_sm.SetItemValue(i,items_text[i]);}
}
Die Klasse CComboBox hat Methoden, die Zeiger auf die Liste und die Bildlaufleiste zurückgeben. Indem Sie Zeiger auf diese Elemente erhalten, können Sie deren Methoden aufrufen.
CListView *GetListViewPointer(void) { return(::GetPointer(m_listview)); }
CScrollV *GetScrollVPointer(void) { return(m_listview.GetScrollVPointer()); }
1. Der Zebra-Stil wird jetzt als Standard für alle Tabellen eingestellt, oder habe ich das falsch verstanden?
1. Der Zebra-Stil ist ein aktivierter Modus. Er ist standardmäßig deaktiviert. Wenn Sie ihn benötigen, genügt es, die entsprechende Methode aufzurufen und dabei die zweite Farbe anzugeben. In dem Artikel wird dies ausführlich erklärt.
2. es wird möglich sein.
3. ich werde im Rahmen der weiteren Code-Optimierung darüber nachdenken.
1. Zebra-Stil aktivierter Modus. Standardmäßig ist er deaktiviert. Wenn Sie ihn brauchen, genügt es, die entsprechende Methode aufzurufen und dabei die zweite Farbe anzugeben. Der Artikel beschreibt dies im Detail.
2. es wird möglich sein.
3. ich werde im Rahmen der weiteren Code-Optimierung darüber nachdenken.
3. Um ehrlich zu sein, bin ich etwas überrascht über das Vorhandensein von sich wiederholenden Methoden in Ihrem Programm. Ich wünschte, ich hätte es sorgfältiger studiert... Sie mögen meinen Code für einen "nicht optimierten Haufen" halten, aber ich habe keinen Mechanismus, der sich zweimal wiederholt. Es gibt keine ähnlichen Funktionen. Ich wünsche mir, dass Sie das auch tun. )
Heutzutage, wo Elemente meist aus mehreren grafischen Objekten bestehen, kann man auf gemeinsame virtuelle Methoden nicht mehr verzichten. Mit Optimierung meinte ich in diesem Teil das Stadium der Entwicklung, in dem alle Elemente gezeichnet werden sollen. Dann, so nehme ich an, können diese virtuellen Standardmethoden auf eine einzige Deklaration und Implementierung in der Basisklasse eines Elements reduziert werden.
Ich möchte Ihren Code hier überhaupt nicht diskutieren. Er ist privat, also behalten Sie ihn für sich. Meine Meinung über das, was ich in Ihrem Code gesehen habe, hat sich nicht geändert.
1. Gegenwärtig, wo Elemente meist aus mehreren grafischen Objekten zusammengesetzt werden, ist es unmöglich, auf gemeinsame virtuelle Methoden zu verzichten. Mit Optimierung meinte ich in diesem Teil das Stadium der Entwicklung, in dem alle Elemente gezeichnet werden. Dann, so nehme ich an, können diese virtuellen Standardmethoden auf eine einzige Deklaration und Implementierung in der Basisklasse eines Elements reduziert werden.
2. ich möchte Ihren Code hier überhaupt nicht diskutieren. Er ist privat, also behalten Sie ihn für sich. Meine Meinung über das, was ich in Ihrem Code gesehen habe, hat sich nicht geändert.
1. Vielleicht gelingt es Ihnen, wenn Sie die Technologie der "gezeichneten" Steuerelemente implementieren, die Duplizierung von Methoden loszuwerden. Wie Sie jedoch selbst bemerkt haben, gehen Sie davon aus, dass es helfen wird. Das heißt - vielleicht wird es das nicht... Meiner Meinung nach haben diese Dinge nichts miteinander zu tun.
Ein "gezeichnetes" Steuerelement unterscheidet sich funktional nicht von einem Element, das aus mehreren Objekten zusammengesetzt ist, aber seine Erstellung erfordert eine völlig andere Technologie. Das heißt, eine andere Technologie als die, die für die Erstellung von Elementen aus mehreren Objekten verwendet wird.
Es ist interessant, dass das gezeichnete Element aus mehreren Objekten besteht, aber diese Objekte sind einerseits keine MT-Objekte (sondern nur Zeichnungsdetails), und andererseits sind die Zeichnungsdetails innerhalb des Programms dieselben funktionalen Objekte mit ihren eigenen Eigenschaften.
Das heißt, die Anzahl der Objekte wird nicht kleiner. Gerade von MT-Objekten werden Details von Elementen (und Elemente selbst) zu internen Objekten des Programms. Und das Programm (im Gegensatz zur OnChartEvent() Funktion) sieht, definiert und arbeitet mit ihnen.
Die Technologie ist sehr komplex und erfordert eine sehr hohe Optimierung des Codes...
2. Da Sie keine Ahnung haben, wie der ganze Mechanismus funktioniert, haben Sie sich beeilt, Ihre Meinung zu äußern. Sie konnten es nicht ändern, weil Sie bisher nur einen winzigen Teil des Codes gesehen haben. Nun, ich werde mich mit einer solchen Meinung von Ihnen abfinden müssen. Leider.)
P.S. Lassen Sie uns nicht darüber diskutieren. Ich bin nicht beleidigt. :)
1. Wenn Sie die Technologie der "gezeichneten" Steuerelemente einführen, werden Sie vielleicht in der Lage sein, die Verdoppelung der Methoden loszuwerden. Wie Sie jedoch selbst bemerkt haben, gehen Sie davon aus, dass es helfen wird. Das heißt - vielleicht wird es das nicht... Meiner Meinung nach haben diese Dinge nichts miteinander zu tun.
Ich gehe davon aus, da ich es noch nicht implementiert und getestet habe.
Ein "gezeichnetes" Steuerelement unterscheidet sich funktional nicht von einem Element, das aus mehreren Objekten zusammengesetzt ist, aber seine Erstellung erfordert eine völlig andere Technologie. Das heißt, eine andere Technologie als die, die für die Erstellung von Elementen aus mehreren Objekten verwendet wird.
Es ist interessant, dass das gezeichnete Element aus mehreren Objekten besteht, aber diese Objekte sind einerseits keine MT-Objekte (sondern nur Zeichnungsdetails), und andererseits sind die Zeichnungsdetails innerhalb des Programms dieselben funktionalen Objekte mit ihren eigenen Eigenschaften.
Das heißt, die Anzahl der Objekte wird nicht kleiner. Gerade von MT-Objekten werden Details von Elementen (und Elemente selbst) zu internen Objekten des Programms. Und das Programm (im Gegensatz zur OnChartEvent()-Funktion) sieht sie, definiert sie und arbeitet mit ihnen.
Sie schreiben so offensichtliche Dinge, dass es nicht einmal interessant ist, mit Ihnen darüber zu diskutieren. Ich sehe das ein wenig anders. Ich werde meine Meinung in einem der nächsten Artikel der zweiten Phase der Entwicklung der Bibliothek zum Ausdruck bringen.
Das nehme ich an, denn ich habe es noch nicht implementiert und getestet.
Sie schreiben so offensichtliche Dinge, dass es nicht einmal interessant ist, mit Ihnen zu diskutieren. Ich sehe das ein wenig anders. Ich werde meine Meinung in einem der nächsten Artikel über die zweite Phase der Entwicklung der Bibliothek zum Ausdruck bringen.
Nun, ich weiß nicht, warum diese Dinge für Sie offensichtlich sind. Haben Sie sie bereits implementiert?
Die Technologie, über die wir gesprochen haben, ist in keinem MQL-Artikel beschrieben. Oder liege ich falsch und können Sie mir einen Link geben?
Die Hauptsache ist, dass es unmöglich ist, durch kosmetische Optimierung zu dieser Technologie zu kommen - Sie müssen"das Fundament ersetzen".
Die Änderung des Fundaments ist der schwierigste Prozess. Normalerweise bricht alles zusammen - Schemata, Zusammenhänge, Mechanismen.... ALLES. Dann wird alles neu aufgebaut.
Im Allgemeinen kann man seinem Feind nicht wünschen, dass er es durchmacht (und außerdem muss man es viele Male durchmachen...). Und am Ende wird der Code ganz anders sein als am Anfang.
H.Y. Stellen Sie sich vor, jemand sagt zu Ihnen nach all Ihren Bemühungen: "Ihr Code ist ein nicht optimierter Haufen". Wären Sie dann beleidigt? :)
Nun, ich weiß nicht, warum diese Dinge für Sie offensichtlich sind. Haben Sie sie bereits implementiert?
Die Technologie, über die wir gesprochen haben, ist in keinem MQL-Artikel beschrieben. Oder liege ich falsch und Sie können mir einen Link geben?
Wenn ich etwas noch nicht implementiert habe, heißt das nicht, dass ich nicht darüber nachgedacht habe und nicht weiß, wie ich es implementieren werde. Ich habe es nur noch nicht in die Hand genommen. Im Gegensatz zu Ihnen beschreibe ich alles, was ich tue, im Detail. Das kostet auch Zeit.
Ich muss nicht erst Artikel lesen, um etwas umzusetzen. Wenn es keine fertige Lösung gibt, suche ich nach meinen eigenen Methoden. Aber Sie haben die Möglichkeit, Artikel zu lesen. Und anstatt zu lesen und keine Fragen zu stellen, die in dem Artikel erklärt werden, "schießt" man wahllos weiter.
Die Hauptsache ist, dass es unmöglich ist, durch kosmetische Optimierung zu dieser Technologie zu kommen - man muss"die Grundlage ändern".
Die Änderung des Fundaments ist der schwierigste Prozess. Normalerweise bricht alles zusammen - Schemata, Zusammenhänge, Mechanismen.... ALLES.
Und am Ende wird der Code ganz anders aussehen als am Anfang.
Bei OOP ist das anders. Sie haben einfach eine absolute Lücke in diesem Bereich des Wissens. Was bei Ihnen "der schwierigste Prozess" ist, wird mit OOP ganz einfach gelöst.
H.I. Stellen Sie sich vor, jemand sagt zu Ihnen nach all Ihren Bemühungen: "Ihr Code ist ein nicht optimierter Heap". Wären Sie beleidigt? :)
Beleidigung ist nicht meine Sache. Ich erinnere mich, dass einer der englischen Forumsteilnehmer eine Lösung (ohne Implementierung) vorschlug, wie man das Schema verbessern könnte. Ich habe es verwendet. Der schwierigste Prozess ist nicht entstanden. Mit Ihrer Herangehensweise werden Sie sich lange quälen, indem Sie mit der schlechten Umsetzung prahlen und gegen Windmühlen kämpfen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Grafische Interfaces X: Erweitertes Management von Listen und Tabellen Code Optimierung (build 7) :
Der Code der Bibliothek muss optimiert werden: Er sollte besser dem Standard folgen, das heißt — leichter lesbar und schneller zu verstehen. Weiters werden wir die als letztes entwickelten Kontrollelemente weiterentwickeln: Listen, Tabellen und Bildlaufleisten.
Daher entschieden wir uns für eine eigene Zwischenklasse für den wiederholt verwendeten Code und den Methoden, um mit den der Form zugeordneten Pointern zu arbeiten. Teile des Schemas der Bibliothek bezüglich der Form und der Kontrollelemente schaut daher wie folgt aus:
Fig. 3. Teile des Schemas der Bibliothek bezüglich der Form und der Kontrollelemente
Autor: Anatoli Kazharski