Cooles, nützliches Zeug, das du da machst ;)
Anatol, ich denke, es gibt einige Verbesserungen, die gemacht werden könnten. Wenn sich der Cursor zum Beispiel über einer der Listen befindet, greift meine Hand nach dem Rad, um die Liste zu scrollen, aber leider scrollen wir das Diagramm. Und Sie haben eine Diagrammbildverfolgung. Vielleicht wäre es besser, die Liste nicht zu entfernen, sondern sie zu scrollen und das Scrollen des Diagramms vorübergehend zu deaktivieren, was meinen Sie?
Und noch etwas: Ich habe nicht gewusst, ob es eine Option gibt, um die Listenbeschreibung, die sich links neben der Listenschaltfläche befindet, nicht anzuzeigen. Sie wird nicht immer benötigt.
Nun, oder im Allgemeinen kardinal - wenn das Hauptfenster des Programms im Fokus ist, dann deaktivieren Sie das Scrollen des Diagramms, und es bereits auf der Stelle zu bestimmen, ob es notwendig ist, etwas aus dem Rad zu scrollen, oder nicht, um es zu reagieren....
In 3D Studio MAX zum Beispiel gibt es eine Reaktion auf die gedrückte linke Maustaste und ihre Bewegung nach oben und unten über die Form des Erhöhens/Verringerns eines beliebigen Wertes. Klickt man auf den Auf- oder Abwärtspfeil und führt, ohne die Taste loszulassen, die Maus nach oben oder unten, so erhöht oder verringert sich der Wert im Formularfenster je nach Bewegungsrichtung der Maus.
Anatol, ich denke, es gibt einige Verbesserungen, die vorgenommen werden könnten. Wenn sich der Cursor zum Beispiel über einer der Listen befindet, greift die Hand nach dem Rad, um die Liste zu scrollen, aber leider scrollen wir das Diagramm. Und Sie haben eine Diagrammbildverfolgung. Vielleicht wäre es besser, die Liste nicht zu entfernen, sondern sie zu scrollen, indem man das Scrollen des Diagramms vorübergehend ausschaltet, meinen Sie nicht?
Soweit ich weiß, können die MQL-Tools verfolgen, ob die mittlere Maustaste gedrückt ist oder nicht. Aber es ist immer noch nicht möglich, zu verfolgen, ob sie scrollt oder nicht.
Und noch etwas: Ich weiß nicht, ob es eine Option gibt, die Listenbeschreibung, die sich links neben der Listentaste befindet, nicht anzuzeigen? Sie ist nicht immer notwendig.
Ja, das ist möglich. Übergeben Sie bei der Erstellung eines Elements einen leeren String ("") an die Methode CComboBox::LabelText().
In 3D Studio MAX zum Beispiel gibt es eine Reaktion auf die gedrückte linke Maustaste und ihre Bewegung nach oben und unten in Form von Erhöhen/Verringern eines Wertes. Klicken Sie auf den Auf- oder Abwärtspfeil und, ohne die Taste loszulassen, führen Sie die Maus nach oben oder unten, und der Wert in der Box Form entweder erhöht oder verringert sich je nach der Richtung der Bewegung der Maus.
Der nächste Artikel wird eine Reihe von Steuerelementen vorstellen, darunter das Element "Eingabefeld". Dort gibt es in der aktuellen Implementierung einen beschleunigten Bildlauf. Das heißt, wenn Sie die linke Maustaste über den Schaltflächen zum Erhöhen/Verringern halten und den Cursor im Bereich dieser Schaltflächen halten, führt dies zu einem beschleunigten Scrollen der Werte.
//+------------------------------------------------------------------+ //|ComboBox.mqh | //| Copyright 2015, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #include "Element.mqh" #include "Window.mqh" #include "ListView.mqh" //+------------------------------------------------------------------+ //| Êëàññ äëÿ ñîçäàíèÿ êîìáèíèðîâàííîãî ñïèñêà | //+------------------------------------------------------------------+ class CComboBox : public CElement { private: //--- Óêàçàòåëü íà ôîðìó, ê êîòîðîé ýëåìåíò ïðèñîåäèí¸í CWim_buttonndow *m_wnd; //--- Îáúåêòû äëÿ ñîçäàíèÿ êîìáî-áîêñà CRectLabel m_area;Gibt es einen Grund, warum die Kommentare nicht mehr auf Englisch sind?
Gibt es einen Grund, warum die Kommentare nicht mehr auf Englisch sind?
Ich habe ssen das gleiche, und denke, sie haben derzeit 2 Dinge.
1. Einige Probleme müssen noch behoben werden (vor allem in MT4 !)
2. Derzeit keine Person, die sie ins Englische übersetzen kann. Für mich ist es auch nicht klar, warum die Hauptkommentare nicht in Englisch sind. Aber solange die Funktionen in Englisch deklariert sind, und die meisten Beispiele wie oben in Englisch verfügbar sind, ist es egal.
Der neue Artikel Graphical Interfaces V: The Combobox Control (Kapitel 3) wurde veröffentlicht:
Autor: Anatoli Kazharski
Gute Arbeit mit den Artikeln. Ich freue mich auf die nächste Serie von Artikeln. Können Sie bitte SplitButton.mqh Zeile 90 überprüfen? Ich erhalte den Fehler
return - cannot convert from const pointer to nonconst pointer.
return - kann nicht von const-Zeiger zu nonconst-Zeiger konvertieren.
Ja, es ist notwendig, das "const" zu entfernen, wenn Sie diesen Fehler erhalten. Später werde ich die Dateien in allen Artikeln aktualisieren.
[WIN7 64bits - MetaTrader5 build 1472]
Seltsames Verhalten von SplitString mit ComboBox.
Ich habe eine Combobox erstellt, um den Sl und den Tp für eine Order zu kontrollieren, aber wenn ich versuche, das ausgewählte Element zu erhalten, gibt es ein Problem.
Wenn der Benutzer auf die Verkaufs- oder Kaufschaltflächen klickt, erhält das Programm das ausgewählte Element aus der Combobox und berechnet den Sl und den Tp für die Order.
Wenn ich es im Debugging-Modus (F5) ausführe, gibt es kein Problem. Aber wenn ich es aus der EA-Liste auf den Chart ziehe, tritt das Problem auf.
Es scheint, als ob die EasyAndFast-Bibliothek die SplitString-, PrintFormat- oder StringToDouble-Funktionen oder etwas Ähnliches außer Kraft setzt. Aber ich bin mir nicht ganz sicher.
Hier ist mein Beispiel:
//| Erzeugt Combobox TP:SL|
//+------------------------------------------------------------------+
bool CProgram::CreateTPSLComboBox(const int x_gap, const int y_gap, const string text) {
// Gesamtzahl der Elemente in der Listenansicht
#define ITEMS_TOTAL1 4
// Übergeben Sie das Panel-Objekt
_tpslCombobox.WindowPointer(_mainWindow);
// An die erste Registerkarte anhängen
_mainTabs.AddToElementsArray(0, _tpslCombobox);
// Koordinaten
int x = _mainWindow.X() + x_gap;
int y = _mainWindow.Y() + y_gap;
// Array der Elementwerte in der Listenansicht
string items_text[ITEMS_TOTAL1] = {"2:4", "2:3", "3:4", "0:0"};
// Eigenschaften vor der Erstellung festlegen
_tpslCombobox.XSize(90);
_tpslCombobox.YSize(18);
_tpslCombobox.LabelText(text);
_tpslCombobox.ButtonXSize(45);
_tpslCombobox.ItemsTotal(ITEMS_TOTAL1);
_tpslCombobox.VisibleItemsTotal(4);
_tpslCombobox.AreaColor(clrWhite);
// Speichern der Elementwerte in der Combobox-Listenansicht
for(int i = 0; i < ITEMS_TOTAL1; i++)
_tpslCombobox.ValueToList(i, items_text[i]);
// Zeiger der Listenansicht abrufen
CListView *lv = _tpslCombobox.GetListViewPointer();
// Einstellen der Eigenschaften der Listenansicht
lv.LightsHover(true);
lv.SelectedItemByIndex(lv.SelectedItemIndex() == WRONG_VALUE ? 0 : lv.SelectedItemIndex());
// Kontrolle erstellen
if(!_tpslCombobox.CreateComboBox(m_chart_id, m_subwin, x, y))
return(false);
// Hinzufügen des Objekts zu dem gemeinsamen Array von Objektgruppen
CWndContainer::AddToElementsArray(0, _tpslCombobox);
return(true);
}
...
//+------------------------------------------------------------------+
//| Funktion verkaufen |
//+------------------------------------------------------------------+
void CProgram::Sell() {
string sep = ":";
ushort usep;
usep = StringGetCharacter(sep, 0);
string s[];
double tp = 0.0;
double sl = 0.0;
if(StringSplit(_tpslCombobox.ButtonText(), usep, s) == 2) {
PrintFormat("s01: %s - s02: %s", s[0], s[1]); // output: s01: 2 - s02: 4
tp = StringToDouble(s[0]);
sl = StringToDouble(s[1]);
}
PrintFormat("tp: %.2f - sl: %.2f", tp, sl); // output: tp: 2.00 - sl: 2.00
...
Die Ausgabe: "tp:2.00 - sl: 2.00" sollte "tp:2.00 - sl: 4.00" lauten.
Aber auch hier tritt das Problem nur auf, wenn ich das Diagramm per Drag & Drop verschiebe. Wenn ich es im Debug-Modus ausführe, ist alles in Ordnung.
Ein Ratschlag?
UPDATE:
Es sieht nach einem Problem in MetaTrader 5 aus, nicht speziell in der EasyAndFast-Bibliothek.
Hier ist ein Test:
//|test.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
{
//---
string sep = ":";
ushort usep;
usep = StringGetCharacter(sep, 0);
string s[];
double tp = 0.0;
double sl = 0.0;
if(StringSplit("2:4", usep, s) == 2) {
tp = StringToDouble(s[0]);
sl = StringToDouble(s[1]);
}
PrintFormat("tp: %.2f - sl: %.2f", tp, sl);
}
//+------------------------------------------------------------------+
Ausgabe: "tp: 2.00 - sl: 2.00", wenn Sie das Skript per Drag & Drop auf den Chart ziehen.
Wenn jemand anderes dies bestätigt, werde ich dem ServiceDesk Bericht erstatten.
Vielen Dank.
[WIN7 64bits - MetaTrader5 build 1472]
Ich habe alles in den mql4-Ordner kopiert. Der TestLibrary Expert Advisor ist grau und lässt sich nicht öffnen. In Expert Advisors heißt es "Datei kann nicht geöffnet werden".
Funktioniert er im Testmodus? Ist es sinnvoll zu untersuchen, warum er nicht startet, denn es ist sehr wichtig, dass er im Testmodus funktioniert.
Ich habe alles in den mql4-Ordner kopiert. Der TestLibrary Expert Advisor ist grau und lässt sich nicht öffnen. In Expert Advisors heißt es "Datei kann nicht geöffnet werden".
Funktioniert er im Testmodus? Ist es sinnvoll, zu untersuchen, warum er nicht läuft, da es sehr wichtig ist, dass er im Testmodus funktioniert.
Die MT4-Version der Bibliothek wird von mir nicht mehr unterstützt.
Die derzeit aktuellste Version für MT5 kann in diesem Artikel heruntergeladen werden: GUIs X: Time Element, Checkbox List Element und Table Sorting (build 6).
Tester-Tests wurden im aktuellen Entwicklungsstadium nicht durchgeführt und werden auch in absehbarer Zeit nicht durchgeführt werden.
- 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 Grafische Interfaces V: Das Combobox Control (Kapitel 3) :
In den ersten zwei Kapiteln des fünften Teils dieser Serie, haben wir Klassen für die Erzeugung einer Scrollbar und einer ListView entwickelt. In diesem Kapitel werden wir über die Erzeugung einer Klasse für eine ComboBox sprechen. Hierbei handelt es sich ebenfalls um ein Komponenten-Control, welches neben anderen Elementen auch Elemente enthält, die wir in den vorherigen Kapiteln des 5. Teils besprochen haben.
Nachfolgend sind die einfachen Objekte für die Zusammenstellung der Combobox aufgelistet:
Abbildung 1. Komponenten des Combobox Controls
Autor: Anatoli Kazharski