Diskussion zum Artikel "Grafische Interfaces X: Updates für die Easy And Fast Bibliothek (Build 2)" - Seite 4

 

http://prntscr.com/tmjkm3


Hallo. Ich arbeite mit MT4, also leider bin ich mit dieser letzten Version von MT4 auf Lager. Hier ist ein Fehler, dass egal, was ich versucht, wird nicht selbst zu beheben. Wie Sie auf dem Bild oben sehen, gibt es eine horizontale Linie "in der Nähe" der Überschrift. Wenn diese horizontale Linie ausgewählt ist, springt sie, wenn Sie in die Überschrift klicken, in die Mitte der Überschrift und bewegt sich mit der Überschrift. Wenn irgendwo im Hintergrund des Fensters eine horizontale Linie ausgewählt ist, können Sie in das Fenster klicken und ziehen, wenn Sie sich in der Nähe der Linie befinden, und die Linie wird verschoben. Dies geschieht mit allen Objekten im Diagramm, nicht nur mit der Linie, nur wenn sie ausgewählt sind, wird dies geschehen.


Mit anderen Worten, das Panel und die Beschriftung "fangen" das Mausereignis nicht ab und lassen es an die Objekte unter ihnen weitergeben. Wie kann man dieses Problem beheben?

Bitte jemand helfen

Screenshot
Screenshot
  • prnt.sc
Captured with Lightshot
 

Hallo,
Ich verstehe diesen Artikel ist das neueste Update für mql4 EasyAndFastGUI?
Können Sie mir bitte sagen, wie man die "expresion nicht boolen" Warnung zu beheben.


 
Nauris Zukas #:

Hallo,
Ich verstehe diesen Artikel ist das neueste Update für mql4 EasyAndFastGUI?
Können Sie mir bitte sagen, wie man die "expresion nicht boolen" Warnung zu beheben.


Welcher Typ istm_show_flags ? Wenn nicht bool, dann ist dies wie: return((bool)m_show_flags);

 
Artyom Trishkin #:

Welchen Typ hatm_show_flags ? Wenn nicht bool, dann return((bool)m_show_flags);

uint m_show_flags. Wenn ich es in bool ändere, verschwindet die Warnung, aber da ich nicht sicher bin, dass es nicht irgendwo in der Kette eine Funktion beschädigt, werde ich so vorgehen, wie Sie es mir geraten haben. Ich danke Ihnen.

 
Nauris Zukas #:

uint m_show_flags. Wenn ich dies in bool ändere, wird die Warnung verschwinden, aber da ich nicht sicher bin, dass es nicht eine Funktion irgendwo in der Kette beschädigt, werde ich tun, wie Sie geraten haben. Ich danke Ihnen.

Sie können sie nicht in bool ändern, da es sich um einen Satz von Flags handelt. Dementsprechend kann der Wert der Variablen größer als 1 sein. Wenn ihr Wert gleich Null ist, ist er gleich dem Wert false einer Variablen vom Typ bool. Wenn also das Ergebnis der Rückkehr zum Typ bool in den Typ bool umgewandelt wird, ergibt jeder Wert einer Variablen, der nicht Null ist, den Wert true. Dementsprechend wird nur 0 den Wert false ergeben.

Und da die Methode (ihrem Namen nach zu urteilen) das Kennzeichen der Objektsichtbarkeit zurückgibt, wird die Methode bei jedem Wert außer Null das Kennzeichen zurückgeben, dass das Objekt zu einem bestimmten Zeitpunkt sichtbar ist. Nur wenn der Wert der Variablen gleich Null ist, wissen wir mit Sicherheit, dass das Objekt in allen Zeitfenstern verborgen ist.

Vielleicht liege ich mit dem Zweck dieser Methode falsch. Aber ich bin von der Tatsache ausgegangen, dass es sich um eine Reihe von Flaggen handelt:

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Видимость объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Übrigens können Sie die Methode nach dem oben Gesagten auch so schreiben:

bool ShowFlags(void) const { return m_show_flags!=OBJ_NO_PERIODS; }

Dann müssen Sie den zurückgegebenen Typ einer nicht-booleschen Variablen nicht in einen Wert vom Typ bool umwandeln - das Ergebnis der Prüfung wird ohnehin zurückgegeben, und das ist bool.

Aber es ist Ihre Entscheidung - es gibt keinen Unterschied.

 
Artyom Trishkin Typ bool umwandeln - sie gibt ohnehin das Ergebnis der Prüfung zurück, und das ist bool.

Aber es ist Ihre Entscheidung - es gibt keinen Unterschied.

Artem, meiner Meinung nach ist es besser, den Funktionstyp in uint zu ändern.

uint ShowFlags(void) const { return m_show_flags; }

Dann kannst du die Sichtbarkeit des Objekts auf einer bestimmten TF anhand des von dieser Funktion erhaltenen Werts überprüfen. Schließlich handelt es sich nicht um einen bestimmten Wert, sondern um eine Reihe von Flags...

 
Alexey Viktorov #:

Artem, meiner Meinung nach ist es besser, den Funktionstyp in uint zu ändern

Dann wird es möglich sein, die Sichtbarkeit des Objekts auf einer bestimmten TF anhand des von dieser Funktion erhaltenen Wertes zu überprüfen. Schließlich handelt es sich nicht um einen bestimmten Wert, sondern um eine Reihe von Flags...

Wir kennen die Bedeutung dieser Methode nicht. Höchstwahrscheinlich handelt es sich um ein Flag - sichtbar/nicht sichtbar. Und die notwendigen Flags aus dem Ergebnis zu fälschen, ist eine Komplikation im Leben des Bibliotheksbenutzers.

 
Artyom Trishkin #:

Die Bedeutung dieser Methode ist uns nicht bekannt. Höchstwahrscheinlich handelt es sich um ein Flag - sichtbar/nicht sichtbar. Und die notwendigen Flaggen aus dem Ergebnis zu fälschen, erschwert das Leben des Bibliotheksbenutzers.

Und wenn ich als Anfänger daran interessiert bin, ob das Objekt auf dem Chart von TF H1 sichtbar ist, und mit dieser Methode erhalte ich, dass das Objekt auf TF M15 sichtbar bzw. wahr ist, aber ich sehe es nicht auf dem Chart... Wie dann?

Vielleicht wäre es besser, einen eingehenden Parameter hinzuzufügen und die Sichtbarkeit auf dem angegebenen TF zu prüfen. Oder irgendwie anders, aber in dieser Form ist es für mich nicht sehr klar....

 
Alexey Viktorov #:

Und wenn ich als Anfänger daran interessiert bin, ob das Objekt auf dem Chart von TF H1 sichtbar ist und ich mit dieser Methode erhalte, dass das Objekt auf TF M15 sichtbar ist, bzw. wahr, aber ich sehe es nicht auf dem Chart... Wie dann?

Vielleicht wäre es besser, einen eingehenden Parameter hinzuzufügen und die Sichtbarkeit auf dem angegebenen TF zu überprüfen. Oder irgendwie anders, aber in dieser Form ist es nicht sehr klar für mich....

Du solltest also Anatoly fragen. Oder lesen Sie den Artikel, in dem beschrieben wird, wofür die diskutierte Methode verwendet wird und welche Methode für die von Ihnen beschriebenen Bedürfnisse zu verwenden ist.

In der Unterhaltung ging es um eine bestimmte Methode und warum der Compiler eine Warnung erzeugt. Warum - das ist klar (falscher Typ), und wie man es beheben kann - ich habe Ihnen zwei Möglichkeiten gezeigt.