Diskussion zum Artikel "Graphische Interfaces III: Gruppen von einfachen und multifunktionalen Buttons (Kapitel 2)"
Beim Kompilieren der Datei SplitButton.mqh erscheint der Fehler "'return' - cannot convert from const pointer to non-const pointer SplitButton.mqh 90 65"
Ja, dieser Fehler trat nach dem letzten Terminal-Update auf. Die "Spielregeln" haben sich etwas geändert. Sie können ihn beheben, indem Sie einfach den const-Spezifizierer löschen.
Gehen Sie zu der Zeile, in der der Fehler auftritt, und ersetzen Sie diese Zeile:
CContextMenu *GetContextMenuPointer(void) const { return(::GetPointer(m_drop_menu)); }
Mit dieser:
CContextMenu *GetContextMenuPointer(void) { return(::GetPointer(m_drop_menu)); }
//---
Sie müssen ähnliche Korrekturen in allen Dateien vornehmen, in denen dieser Fehler auftritt. In den nächsten Artikeln dieser Reihe wird der Fehler behoben.
Vielen Dank für Ihren Beitrag.
Der neue Artikel Graphical Interfaces III: Gruppen von einfachen und multifunktionalen Schaltflächen (Kapitel 2) wurde veröffentlicht:
Autor: Anatoli Kazharski
Tolle Arbeit!
Aber: wenn ich versuche, das Panel als Indikator auf MT4 (!) zu verwenden, führt jeder Klick auf einen "Icon Button" zu einer zweimaligen Ausgabe von
::Print(__FUNCTION__," > id: ",id,"; lparam: ",lparam,"; dparam: ",dparam,"; sparam: ",sparam);
Also jeder Klick Aktion wie ein Inkrement oder etwas anderes wird zweimal durchgeführt werden :(
Gibt es eine Möglichkeit, es zu beheben?
P.S. die seltsame Sache ist, dass alles funktioniert gut auf MT5. Nur MT4 hat dieses Problem bei der Verwendung als Indikator. Als Expert funktioniert es auch gut.
...
Gibt es irgendeine Möglichkeit, es zu beheben?
P.S. die seltsame Sache ist, dass alles funktioniert gut auf MT5. Nur MT4 hat dieses Problem bei der Verwendung als Indikator. Als Expert funktioniert es auch gut.
Hallo!
Ich habe eine quick'n'dirty Lösung gemacht, die für mich sehr gut funktioniert. Mein Weg war es, die linke Taste gedrückt Bit getrennt auf den ersten in OnEvent zu überprüfen und wenn gesetzt ist, ein bool true in einem Helfer zu schreiben. Danach die reguläre if-Statemenet mit helper == true erweitert, und innerhalb des if einfach den helper zurückgesetzt. Funktioniert fast perfekt. In manchen Fällen sind zu schnelle Klicks nicht erwähnenswert, aber besser langsamere Klicks als doppelte Ergebnisse zu haben :)
BTW: wäre nett, wenn jemand alle Ihre aktuellen Libraries auf Englisch aktualisieren könnte. Eure neuesten z.B. Artikel 05 und so weiter sind nur auf russisch.
Hallo!
Ich habe gerade die Dateien aus dem Artikel heruntergeladen3
Als ich sie kompiliert habe.. Ich bekam den folgenden Fehler
CContextMenu *GetContextMenuPointer(void) const { return(::GetPointer(m_drop_menu));
Datei = splitButton.mqh.
Weiß jemand, wie man das Problem beheben kann?
Ich versuche, einen einfachen Button zu erstellen.
Danke
Danke
Löschen "const" ist OK
CContextMenu *GetContextMenuPointer(void) { return(::GetPointer(m_drop_menu));
- 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 Graphische Interfaces III: Gruppen von einfachen und multifunktionalen Buttons (Kapitel 2) :
In dem ersten Kapitel dieser Serie ging es um einfache und multifunktionelle Buttons. Der zweite Artikel handelt über Gruppen von interagierenden Buttons, mit denen der Programmierer Elemente erzeugen kann, bei der der Anwender ein Element aus der Gruppe auswählen kann.
Erzeugen Sie die RadioButtons.mqh Datei mit der CRadioButtons Klasse, welche Standard virtuelle Methoden und Klassen für das Abspeichern und Abfragen des Formular-Pointers besitzen muss. Sie können sich die Beispiele in den Klassen der anderen Controls ansehen, die wir oben gezeigt haben. Beziehen Sie die RadioButtons.mqh Datei in der Bibliothek (WndContainer.mqh) mit ein.
Jeder Radio-Button besteht aus drei einfachen Objekten:
Abbildung 3. Komponenten des Radio-Buttons
Autor: Anatoli Kazharski