Diskussion zum Artikel "Graphisches Interface XI: Gezeichnete Steuerelemente (build 14.2)"

 

Neuer Artikel Graphisches Interface XI: Gezeichnete Steuerelemente (build 14.2) :

In der neuen Version der Bibliothek werden alle Steuerelemente als eigenständige Grafikobjekte des Typs OBJ_BITMAP_LABEL gezeichnet. Der Code wird auch weiterhin optimiert: die Änderungen in den Kernklassen werden beschrieben.

Unten sind verschiedene Arten von Tasten dargestellt:

 Fig. 9. Demonstration der Darstellung verschiedener Arten von Tasten.

Fig. 9. Demonstration der Darstellung verschiedener Arten von Tasten.

Autor: Anatoli Kazharski

 

Cool, ist das die endgültige Version oder wird es noch einige Verbesserungen geben? Wenn ich also vom Standard-Panel auf Ihres umsteige, muss ich im Falle von Updates nicht vieles neu machen.

 
Maxim Dmitrievsky:

Cool, ist das die endgültige Version oder wird es noch einige Verbesserungen geben? Damit ich, wenn ich vom Standard-Panel auf Ihres umsteige, bei Updates nicht vieles neu machen muss.

Jetzt gibt es bereits einen weiteren Artikel zur Veröffentlichung mit einigen Ergänzungen. Die Tabellenzellen werden um Eingabefelder und Kombinationsfelder ergänzt.

Als Ankündigung kann ich Ihnen zeigen, wie es aussehen wird:


//---

Und es ist geplant, eine grafische Standardbibliothek zu integrieren, die in diesem Artikel beschrieben wird: Visualise it! Grafische Bibliothek in MQL5 als Analogon zu plot aus R

Danach werde ich eine Pause einlegen. Zum Schluss. )

 

Ich verstehe Zeiger nicht wirklich, und ich verstehe auch die Methode der Arbeit mit Methoden nicht.

Wenn man zum Beispiel einen Hintergrund erstellt, zeigt intellens eine Menge Methoden an, die nicht für den Hintergrund gelten.

Das sorgt für viel Verwirrung...

Ist es möglich, Objekte so zu erstellen, dass nur die für sie geltenden Methoden sichtbar sind?


Hier ist ein Beispiel

Klasse test

{

int met_1();

int met_2();

int met_3();

int met_4();

int met_5();

};


class TEST2: public test

{


}

Wie kann man es so einrichten, dass nur 3 4 Methoden in der Nachfolgeklasse sichtbar sind und der Rest nicht?

 
Vladimir Pastushak:

...

Wie kann man erreichen, dass nur 3 4 Methoden in der Nachfolgeklasse sichtbar sind und der Rest nicht?

Definieren Sie Zugriffsspezifizierer.

MQL5 Referenzhandbuch > Grundlagen der Sprache > Variablen > Abschnitt Zugriffsspezifikationen

Die folgenden Spezifizierer werden für den Zugriff auf Mitglieder von Strukturen und Klassen verwendet:

  • public - erlaubt den uneingeschränkten Zugriff auf eine Variable oder Methode einer Klasse;
  • protected - erlaubt den Zugriff von den Methoden dieser Klasse sowie von den Methoden öffentlich geerbter Klassen. Ein anderer Zugriff ist nicht möglich;
  • private - erlaubt den Zugriff auf Variablen und Methoden der Klasse nur von den Methoden dieser Klasse aus.
  • virtual - gilt nur für Klassenmethoden (aber nicht für Strukturmethoden) und teilt dem Compiler mit, dass diese Methode in die Tabelle der virtuellen Funktionen der Klasse aufgenommen werden soll.

 
Anatoli Kazharski:

Zugriffsspezifizierer bezeichnen.

MQL5 Referenzhandbuch > Grundlagen der Sprache > Variablen > Abschnitt Zugriffsspezifikationen


Ich habe es gelesen und mir die Videolektionen angesehen, aber ich verstehe es nicht....

Können Sie mir ein einfaches Beispiel geben?

 
Vladimir Pastushak:

Ich habe es gelesen und mir die Videolektionen angesehen, aber ich verstehe es nicht....

Können Sie mir ein einfaches Beispiel geben?

Lesen Sie zumindest diesen Artikel: Grundlagen der objektorientierten Programmierung >>>. Darin ist alles sehr klar und es gibt Beispiele.

Oder eröffne einen Thread mit Fragen zur objektorientierten Programmierung.

 
Anatoli Kazharski:

Lesen Sie zumindest diesen Artikel: Grundlagen der objektorientierten Programmierung >>>. Darin ist alles sehr klar und es gibt Beispiele.

Oder eröffnen Sie einen Thread mit Fragen zur objektorientierten Programmierung.


Ich habe alles gelesen, das Problem ist, dass es für dich als Programmierer perfekt oder richtig erscheint, du bist ja im Fach.

Aber für mich als jemand, der nicht in der Materie ist, ist es nicht klar..... Obwohl ich schon lange im prozeduralen Stil schreibe und versuche, Objekte zu beherrschen....

 
Vladimir Pastushak:

Ich verstehe Zeiger nicht wirklich, und ich verstehe auch die Methode der Arbeit mit Methoden nicht.

Wenn man zum Beispiel einen Hintergrund erstellt, zeigt intellens eine Menge Methoden an, die nicht für den Hintergrund gelten.

Das sorgt für viel Verwirrung...

Ist es möglich, Objekte so zu erstellen, dass nur die für sie geltenden Methoden sichtbar sind?

Hier ist ein Beispiel

class test

{
int met_1();
int met_2();
int met_3();
int met_4();
int met_5();
};

class TEST2: public test
{
}

Wie kann ich erreichen, dass in einer Nachfolgeklasse nur 3 oder 4 Methoden sichtbar sind und der Rest nicht?

Sind sie nicht anwendbar? Die Methoden der übergeordneten Objekte müssen angezeigt werden. In diesem Fall kann die Dokumentation helfen. In der Standardbibliothek haben wir spezielle Blöcke hinzugefügt, die geerbte Methoden anzeigen. Zum Beispiel für CWndObj:

 
Vladimir Pastushak:

Ich habe alles gelesen, das Problem ist, dass es für Sie als Programmierer perfekt oder richtig erscheint, da Sie sich mit dem Thema auskennen.

Aber für mich als jemand, der nicht in der Materie steckt, ist es nicht klar..... Obwohl ich seit langem im prozeduralen Stil schreibe und versuche, Objekte zu beherrschen...

Versuchen Sie also, es noch einmal zu lesen. Es gibt eine klare Antwort auf Ihre Frage. Sie könnte nicht deutlicher sein.

Stellen Sie Ihre Fragen dort oder in jedem anderen Thread, in dem OOP diskutiert wird. Hier geht es um eine Bibliothek zur Erstellung grafischer Oberflächen.

 

Hi. Tol, ich habe in den Beispielen nichts gefunden, wie ich jetzt eine Trennlinie im Fenster zeichnen kann.

Was bedeutet index?

bool CSeparateLine::CreateSeparateLine(const int index,const int x_gap,const int y_gap,const int x_size,const int y_size)

Welcher Index-Parameter, Index von was, soll da übergeben werden?

Und noch eine Frage zur gleichen Zeit: wenn ich eine Textbeschriftung (CTextLabel) auf dem Hintergrund eines Fensters zeichne, das eine gewisse Transparenz hat, werden die Beschriftungen auf dem undurchsichtigen Hintergrund gezeichnet, der nicht auf die Alpha()-Methode reagiert, und es sieht nicht gut aus .... Ist es möglich, den Hintergrund von Labels auch transparent zu machen?