Diskussion zum Artikel "Graphisches Interface X: Textauswahl im mehrzeiligen Textfeld (build 13)" - Seite 8
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
Übrigens, es gibt ein Problem:
Die hervorgehobene Zeile erlaubt es nicht, im Testprogramm zu arbeiten.Ich habe noch gar nicht im Tester getestet, da es dort bisher viele Einschränkungen gab. Also vorläufig so weit.
Haben Sie schon versucht, die GUI im Tester zu testen? Was ist das Ergebnis? Funktionieren die Ereignisse? Werden alle grafischen Objekte angezeigt?
Ich habe es noch nicht im Tester getestet, da es dort vorher eine Menge Einschränkungen gab. Deshalb ist es jetzt erst einmal so.
Haben Sie schon versucht, die GUI im Tester zu testen? Was ist das Ergebnis? Funktionieren die Ereignisse? Werden alle grafischen Objekte angezeigt?
Ja, alle Objekte werden angezeigt, Mausereignisse auf Diagrammen funktionieren im Tester nicht, aber die gesamte Oberfläche ist lebendig, und das war auch schon vorher so.
Generell werde ich den eingebauten Timer wohl erst einmal aufgeben, um die Bibliothek nicht zu bearbeiten ))
Ich kann nicht herausfinden, wie man das Formular wurde eine bestimmte Größe auf X erstellt und wurde an den rechten Rand des Diagramms gebunden, dh, wenn Sie die Größe des Diagramms auf X ändern, würde das Formular nicht die Größe ändern würde nach rechts / links, ohne seine Größe zu bewegen.
Als eine Möglichkeit, die ChartEventChartChange-Methode in der CWndEvents-Klasse zu überschreiben, ist diese Methode in den privaten Abschnitt, vielleicht ist es sinnvoll, die Methoden zu verschieben:
In den geschützten Bereich verschieben, aber auch dort werden Methoden aus dem privaten Bereich verwendet? Falls jemand auf ein solches Problem gestoßen ist, bitte ich um einen Lösungsvorschlag
Ich kann nicht herausfinden, wie man das Formular wurde eine bestimmte Größe auf X erstellt und wurde an den rechten Rand des Diagramms gebunden, dh, wenn Sie die Größe des Diagramms auf X ändern, würde das Formular nicht die Größe ändern würde nach rechts / links, ohne seine Größe zu bewegen.
Als eine Möglichkeit, die ChartEventChartChange-Methode in der CWndEvents-Klasse zu überschreiben, ist diese Methode in den privaten Abschnitt, vielleicht ist es sinnvoll, die Methoden zu verschieben:
In den geschützten Bereich verschieben, aber auch dort werden Methoden aus dem privaten Bereich verwendet? Generell, wenn jemand auf ein solches Problem gestoßen ist, bitte einen Lösungsvorschlag machen
Ungefähr so:
//---
Im Eventhandler der Benutzerklasse der MQL-Anwendung bei der Verarbeitung des Ereignisses CHARTEVENT_CHART_CHANGE:
//---
Ergebnis:
//---
Sie können auch eine Prüfung hinzufügen, ob sich die Größe (Breite) des Diagrammfensters geändert hat, denn das Ereignis CHARTEVENT_CHART_CHANGE wird in verschiedenen Fällen erzeugt. Zum Beispiel, wenn das Diagramm gescrollt wird.
Sie lautet in etwa so:
//---
Im Eventhandler einer benutzerdefinierten MQL-Anwendungsklasse bei der Verarbeitung eines CHARTEVENT_CHART_CHANGE-Ereignisses:
//---
Ergebnis:
//---
Sie können auch eine Prüfung hinzufügen, ob sich die Größe (Breite) des Diagrammfensters geändert hat, da das Ereignis CHARTEVENT_CHART_CHANGE in verschiedenen Fällen erzeugt wird. Zum Beispiel, wenn das Diagramm gescrollt wird.
oops, es hat funktioniert ))
Wie erhält man in der Tabelle den Index der Zeile, auf die die linke Maustaste geklickt wurde, wenn SelectableRow(false) beim Erstellen der Tabelle gesetzt wurde? Das Parsen des Parameters sparam in OnEvent sieht nicht elegant aus. Natürlich ist es möglich, SelectableRow(true) zu verwenden und SelectedItem() zu benutzen, aber die Aufgabe ist, ohne Zeilen in der Tabelle auszuwählen.
Wie erhält man in der Tabelle den Index der Zeile, auf die die linke Maustaste geklickt wurde, wenn SelectableRow(false) beim Erstellen der Tabelle gesetzt wurde? Das Parsen des Parameters sparam in OnEvent sieht nicht gerade elegant aus. Natürlich können wir SelectableRow(true) und SelectedItem() verwenden, aber die Aufgabe ist ohne Auswahl von Zeilen in der Tabelle.
Wie kann man zwischen dem Ereignis der Auswahl einer Zeile in einer Tabelle und der Auswahl eines Elements in einem Kombinationsfeld unterscheiden? Aus dem Code geht klar hervor, dass beide das gleiche Ereignis ON_CLICK_LIST_ITEM verwenden.
Ich zeige eine Tabelle in einem Formular an, wähle eine Zeile darin aus, wähle einen Wert in einer Combobox aus und die Daten aus der Tabellenzeile und der Wert aus der Combobox sollen in eine separate Entität geschrieben werden. Nun sind die Ereignisse nicht voneinander abgegrenzt und es ist notwendig, Krücken zu bauen, die die Aufgabe erfüllen:
Vielleicht können Sie einen anderen Mechanismus vorschlagen?
Im Grunde ist die Tabelle ein Array von Ticker-Paaren, die Combo-Box enthält Signaltypen, eine separate Entität sind die Objekte des Arrays von Signalen. Bei den Objekten selbst handelt es sich nicht um ein einzelnes Feld, sondern um komplexe benutzerdefinierte Datentypen, in denen ein Paar von Tickern aus der Tabelle und ein Signaltyp gespeichert werden, und dann wird eine weitere Verarbeitung vorgenommen.