Bibliotheken: Die Bibliothek EasyAndFastGUI zum Erstellen von grafischen Interfaces - Seite 11
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
Ursprünglich gab es einfach keine solche Aufgabe, dass es notwendig war, Elemente zu verschieben, nachdem die GUI erstellt war. Alles basierte auf der Idee, dass jedes Element bereits das notwendige Verhalten implementiert hatte.
Gegenfragen: Warum müssen Sie Elemente verschieben? Was wollen Sie tun? Welches Verhalten bei der Interaktion mit der grafischen Benutzeroberfläche möchten Sie erreichen?
Um zu verstehen, ob etwas kaputt gehen wird, müssen Sie alle Elemente nach jeder Änderung der Basisklassen testen. Es ist schon schwer, das auf Anhieb zu sagen. Es ist schon eine Weile her, dass ich mich damit beschäftigt habe.
Erstellen Sie eine Test-GUI mit allen Elementen der Bibliothek und testen Sie diese nach Änderungen.
Zum Beispiel aufklappbare Listen. Wenn man klickt, werden einige der Elemente ausgeblendet, alles darunter wird nach oben gezogen. Und andersherum.
Test GUI ist eine gute Idee, ich werde versuchen, es zu machen :)
Übrigens, in der gleichen CElement::Moving.
Wenn es eine Bindung gibt, bewegt sich das Element zusammen mit dem Canvas. Also sollte theoretisch nichts kaputt gehen :)
Hat jemand versucht, eine Combobox mit dieser Bibliothek zu erstellen - um Elemente darin zu ändern ????? Share Wie macht man das?
Ich erstelle eine Combobox, alles funktioniert. Dann fülle ich sie mit Elementen, indem ich die folgende Funktion verwende:
Alles funktioniert. Nachdem ich in der gefüllten Combobox einen Wert ausgewählt habe - zum Beispiel den dritten Wert - und auf die Schaltfläche geklickt habe, kommt es zu einer Reihe von Aktionen, die zum Überlauf der Combobox führen. Und ich fülle sie wieder mit einem Wert auf (z. B. waren ursprünglich 20 Elemente darin, nach dem Klicken auf die Schaltfläche ist nur noch ein Element übrig!)
Und hier kommt ein interessanter Fehler - nachdem alles überschrieben ist (mit der obigen Funktion) - versuche ich, die Combobox zu öffnen, aber ich kann es nicht tun, weil der Fehler Array out of range!
Der Fehler tritt in der Methode:
void CListView::RedrawItemsByMode(const bool is_selected_item=false).
In Zeile 1364. Wie ich durch Nachforschen herausgefunden habe, tritt es auf, weil:
1) bei der Auswahl des dritten Elements der Liste (vor dem Drücken der Schaltfläche) - die Variable
m_prev_item_index_focus mit einem Index gleich 3 gefüllt wird.
Dann wird dieser Index über die Variable prev_item_index an das Array
indexes
in Zeile 1357 übergeben. Das Ergebnis davon - in Zeile 1364 - ist die Auswahl eines Wertes aus dem Array
m_items
bei Index #2 (der dem letzten ausgewählten Element entspricht), während das Array (m_items) nur einen Wert bei Index #0 hat.
Ich suche nun schon den zweiten Tag und konnte immer noch nicht die Stelle finden, an der der Wert der Variablen
m_prev_item_index_focus auf Null zurückgesetzt wird.
Logischerweise sollte er in der Clear-Methode der CListView-Klasse gelöscht werden, die ich verwendet habe, um alle Elemente dort zu löschen, aber leider konnte ich dort keine solche Methode finden....
Im Zusammenhang mit all den obigen Fragen:
1) Ist es ein Fehler in der Bibliothek, oder aktualisiere ich die Werte falsch?
2) Wie umgeht man dieses Problem am besten?
Bis jetzt laufen alle Lösungen, die ich gefunden habe, darauf hinaus, den Bibliothekscode zu bearbeiten (3 neue Codezeilen hinzuzufügen) - aber ich mag die Idee nicht, den Code von jemand anderem zu verändern...
Minimaler reproduzierbarer Code für meine Frage:
...
Bisher laufen alle Lösungen, die ich gefunden habe, darauf hinaus, den Bibliothekscode zu bearbeiten (3 neue Codezeilen hinzuzufügen) - aber ich mag die Idee nicht, den Code von jemand anderem zu verändern...
Danke für die Nachricht.
Versuchen Sie, eine kleine Ergänzung zur Methode der Klasse CListView vorzunehmen. Sie müssen die Hilfsfelder wie unten angegeben löschen:
Vielen Dank für diese Nachricht.
Versuchen Sie, eine kleine Ergänzung zur Methode der Klasse CListView vorzunehmen. Sie müssen die Hilfsfelder wie unten beschrieben löschen:
Vielen Dank für Ihre Antwort.
Wie wäre es mit einem Repository auf Bitbucket, das Commits von aktiven Bibliotheksbenutzern annimmt?
Wir werden es gemeinsam schneller fertigstellen ;)
Können Sie mir sagen, wie ich die Schaltfläche zum Schließen des Fensters richtig handhaben kann?
Das Problem ist folgendes: Ich platziere einen Expert Advisor (z.B. ExampleEAF.ex5) und meinen Indikator in einem separaten Fenster unter dem Chart (der Minimalcode zeigt nur ein leeres Fenster an). Wenn ich dann in einer dieser Anwendungen auf die Schaltfläche "Fenster schließen" klicke, werden beide geschlossen (aus dem Chart entfernt).
Dieses Verhalten ist nicht ganz korrekt. Gibt es eine Möglichkeit, Ereignisse für verschiedene Anwendungen, die gleichzeitig auf demselben Diagramm arbeiten, zu unterscheiden? Es besteht der Verdacht, dass sich auch andere Ereignisse überschneiden könnten.
Wie wäre es mit einem Repository auf Bitbucket, das Commits von aktiven Bibliotheksbenutzern annimmt?
Wir werden es gemeinsam schneller fertigstellen ;)
Ich habe bereits Zugang erhalten. Viele der Bearbeitungen sind für mich fragwürdig.
Es gibt keine Rechtfertigung für diese oder jene Änderungen. Es ist einfacher, sie hier im Forum zu diskutieren.
Wenn irgendwelche Änderungen vorgenommen werden, ist es notwendig, Beispiele und Testergebnisse zu nennen und zu erklären, warum es besser ist.
Können Sie mir sagen, wie ich die Schaltfläche "Fenster schließen" richtig handhaben kann?
Das Problem ist folgendes: Ich platziere einen Expert Advisor (z.B. ExampleEAF.ex5) und meinen Indikator in einem separaten Fenster unter dem Chart (der Minimalcode zeigt nur ein leeres Fenster an). Wenn ich dann auf die Schaltfläche "Fenster schließen" in einer dieser Anwendungen klicke, werden beide geschlossen (aus dem Chart entfernt).
Dieses Verhalten ist nicht ganz korrekt. Gibt es eine Möglichkeit, Ereignisse für verschiedene Anwendungen, die gleichzeitig auf demselben Diagramm arbeiten, zu unterscheiden? Ich vermute, dass sich auch andere Ereignisse überschneiden können.
Ich werde es testen, wenn ich Zeit habe, und das Ergebnis hier mitteilen.
Andrey Khatimlianskii:
Как на счет репозитория на битбакете и принятия коммитов от активных пользователей библиотеки?
Вместе быстрее допилим ;)
Anatoli Kazharski:
...
Wenn Änderungen vorgenommen werden, ist es notwendig, Beispiele und Testergebnisse mit einer Erklärung, warum es besser wäre, zu geben.
Zumindest kurz. Zum Beispiel:
Korrekturen in der CListView-Klasse. In der Clear()-Methode müssen wir einige Hilfsfelder auf Null setzen, um zu verhindern, dass andere Methoden der Klasse außerhalb des Arrays gehen.