Diskussion zum Artikel "Verwendung von Layouts und Containern für GUI Controls: Die CBox Klasse" - Seite 2
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Dieser Code lässt sich nicht kompilieren. Build 1702.
'pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
m_client_area' - privater Member Zugriffsfehler PipValueCalculator.mqh 118 60
m_client_area' - Fehler beim Zugriff auf ein privates Mitglied PipValueCalculator.mqh 118 91
m_client_area' - Fehler beim Zugriff auf ein privates Mitglied PipValueCalculator.mqh 129 72
m_client_area' - Fehler beim Zugriff auf ein privates Mitglied PipValueCalculator.mqh 148 75
m_client_area' - Fehler beim Zugriff auf ein privates Mitglied PipValueCalculator.mqh 168 77
m_client_area' - Fehler beim Zugriff auf ein privates Mitglied PipValueCalculator.mqh 187 72
6 Fehler, 0 Warnung(en) 7 1
Nebenbei bemerkt, wenn ich es nicht übersehen habe, sollten Sie angeben, wo die Dateien abgelegt werden sollen. Wir müssen uns den Code ansehen, um zu wissen, dass wir einen Ordner "Layouts" in Include erstellen und die Datei Box.mqh darin ablegen müssen.
Ich verwende den Build 1755.
Jetzt ist der Member m_client_area der Klasse CDialog in Controls\Dialog.mqh privat und es wurden neue Methoden erstellt, um die Eigenschaften Width und Height zu erhalten.
Kode ini tidak dikompilasi Bangun 1702
pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 118 60
m_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 118 91
m_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 129 72
m_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 148 75
m_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 168 77
m_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 187 72
6 Fehler (s), 0 Warnung (s) 7 1
Jadi catatan, kecuali jika saya melewatkannya, anda harus menentukan di mana tempat file-file tersebut. Sebagai catatan, kecuali jika saya melewatkannya, Anda harus menentukan di mana menempatkan file-file tersebut. Kita perlu mencoba dan melihat kode untuk mengetahui bahwa kita perlu membuat folder "Layouts" di Include dan menempatkan file Box.mqh di dalamnya.Kita perlu mencoba dan melihat kode untuk mengetahui bahwa kita perlu membuat folder "Layouts" di Include dan menempatkan file Box.mqh di dalamnya.
Ich bin auf ein Problem mit diesem nützlichen Add-on gestoßen.
Ich bitte diejenigen um Rat, die sich mit Standard-Steuerelementen auskennen.
Da dieses Add-In mit Panels die Standardklassen CWnd und CWndClient verwendet, gehe ich davon aus, dass die Kenntnis ihrer internen Struktur ausreicht, um zu verstehen, wo der "Hund im Pfeffer liegt".
Die Essenz des Problems. Wir nehmen das Programm Controls2.mq5 aus dem Artikel (zum Kompilieren benötigen wir auch ControlsDialog2.mqh und Box.mqh), kompilieren es und führen es aus.
Fast alles funktioniert gut, bis auf den "Datapicker". Er öffnet und schließt sich nur, aber im geöffneten Zustand reagiert er nicht auf Klicks und überspringt Ereignisse an die darunter liegenden Steuerelemente.
Die ursprüngliche ähnliche Demo von MQ (Experts/Examples/Controls.mq5) funktioniert mit "datapicker" normal.
Fast alles funktioniert gut, außer dem "Datapicker". Es öffnet und schließt nur, aber im offenen Zustand reagiert es nicht auf Drücke und überspringt Ereignisse zu den darunter liegenden Steuerelementen.
Die ursprüngliche ähnliche Demo von MQ (Experts/Examples/Controls.mq5) funktioniert mit "datapicker" normal.
Die Frage wird entfernt. In CDatePicker gibt es keinen BringToTop-Aufruf, wenn das Dropdown aufgeklappt wird, wie es z.B. in CComboBox der Fall ist. Im Standardbeispiel funktioniert der CDatePicker aufgrund der Tatsache, dass seine Initialisierung (absichtlich oder versehentlich) nach der Erstellung der "Leafbox" verschoben wurde, die topologisch unter ihm liegt. Und die Steuerelemente in CWndContainer::OnMouseEvent werden vom letzten zum ersten hinzugefügten umgangen.
Um dies normal zu beheben, müsste CDatePicker::ListShow überschrieben werden, aber das ist nicht virtuell. Wir müssen CDatePicker::OnClickButton umdefinieren und dort BringToTop hinzufügen. Allerdings können wir das nicht so gut machen wie mit jeder virtuellen Methode in der Standardbibliothek, da alle Mitgliedsvariablen als privat deklariert sind. Insbesondere ist es unmöglich, zu schreiben:
denn m_drop ist nicht verfügbar. Wir müssen BringToTop sowohl beim Öffnen als auch beim Zusammenklappen aufrufen.
und es gibt ein paar Fehler: