Diskussion zum Artikel "Erstellen einer interaktiven grafischen Nutzeroberfläche in MQL5 (Teil 1): Erstellen des Panels"
Tolle Tutorials...Gute Arbeit
@Isaac Amo Ich schätze das Feedback und die Anerkennung. Ich fühle mich geschmeichelt. Ich danke Ihnen.
Sehen Sie sich den neuen Artikel an: Erstellen einer interaktiven grafischen Benutzeroberfläche in MQL5 (Teil 1): Erstellen des Panels.
Autor: Allan Munene Mutiiria
Wow, sehr nett von Ihnen, diesen Artikel zu teilen. Glücklicher Fund
Vielen Dank @Malcolm Campbell für die freundliche Bewertung und das Feedback.
Der neue Artikel Interaktive GUIs in MQL5 erstellen (Teil 1): Panels erstellen wurde veröffentlicht:
Ist es möglich, dieses Panel frei beweglich zu machen? frei bewegen?
Als Anfängerin in MQL5 hat mir der Artikel sehr gut gefallen. Ich danke Ihnen für den Artikel. Aber ich dachte, dass die Deinitialisierungsfunktion erheblich reduziert werden kann, wenn ObjectDelete in einer Schleife über alle erstellten und gespeicherten Namen von grafischen Objekten ausgeführt wird. Dazu muss man ein Array mit Strings, einen Zähler für grafische Objekte und Operatoren für die Übergabe von Namen an das Array in den Funktionen zum Erstellen und Initialisieren von Parametern grafischer Objekte hinzufügen. Ich habe es auf diese Weise gemacht:
#define ADDOBJ ArrayResize(objectsArray, objectCount+1);\ objectsArray[objectCount] = objName;\ objectCount++; string objectsArray[]; int objectCount = 0;
//+------------------------------------------------------------------+ //| Experten-Deinitialisierungsfunktion| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { // Erstellte grafische Objekte löschen for(int i = 0; i < objectCount; i++) { if(ObjectFind(0, objectsArray[i]) >= 0) { ObjectDelete(0, objectsArray[i]); // Print("Objekt gelöscht: ", objectsArray[i]); } } }
Ich habe auch hinzugefügt:
input int base_x = 300; // Linker Einzug input int base_y = 100; // Oberer Einzug input bool Include_DropDown = false; // DropDown anzeigen //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { CreatPanel(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Function to create Panel | //+------------------------------------------------------------------+ void CreatPanel() { createRecLabel("MAIN_REC",10,30,250,400,clrWhite,1,clrBlack); createRecLabel("MAIN_SUB_REC",15,35,240,390,C'245,245,245',1,clrNONE); createRecLabel("MAIN_LINE_UP",15,35,240,1,C'245,245,245',1,clrNONE,BORDER_RAISED); ... if(Include_DropDown) { createDropDown(); } ChartRedraw(0); }
Und ich habe die Funktionen zur Erstellung von Grafikobjekten ein wenig verändert:
//+------------------------------------------------------------------+ //| Funktion zum Erstellen von Textbeschriftungen| //+------------------------------------------------------------------+ bool createLabel(string objName, int xD, int yD, string txt, color clrTxt = clrBlack, int fontSize = 12, string font = "Arial Rounded MT Bold") { ResetLastError(); if(!ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0)) { Print(__FUNCTION__, ": failed to create the label! Error code = ", _LastError); return (false); } ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, base_x + xD); // Hinzufügen von base_x + ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, base_y + yD); // Hinzufügen von base_y + ObjectSetInteger(0, objName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetString(0, objName, OBJPROP_TEXT, txt); ObjectSetInteger(0, objName, OBJPROP_COLOR, clrTxt); ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, fontSize); ObjectSetString(0, objName, OBJPROP_FONT, font); ObjectSetInteger(0, objName, OBJPROP_BACK, false); ObjectSetInteger(0, objName, OBJPROP_STATE, false); ObjectSetInteger(0, objName, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, objName, OBJPROP_SELECTED, false); ADDOBJ return (true); }
- 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 Erstellen einer interaktiven grafischen Nutzeroberfläche in MQL5 (Teil 1): Erstellen des Panels :
In diesem Artikel werden die grundlegenden Schritte bei der Erstellung und Implementierung einer grafischen Nutzeroberfläche (GUI) mit MetaQuotes Language 5 (MQL5) erläutert. Nutzerdefinierte Utility-Panels verbessern die Nutzerinteraktion beim Handel, indem sie gängige Aufgaben vereinfachen und wichtige Handelsinformationen visualisieren. Durch die Erstellung nutzerdefinierter Panels können Händler ihre Arbeitsabläufe straffen und bei Handelsgeschäften Zeit sparen.
Wir werden ein GUI-Panel erstellen, das die gebräuchlichsten Dienstprogramme enthält, die jeder Händler benötigen könnte, und daher wollen wir in dieser Serie alles umreißen und abdecken. Die Anzahl der Elemente, die behandelt werden müssen, ist daher sehr umfangreich, aber wir werden sie zum besseren Verständnis zusammenfassen. Wir werden 4 Elemente für unsere GUI-Entwicklung verwenden, und damit werden wir sie erstellen. Das Panel wird die Erstellung von Handelsschaltflächen, scharfen Rechtecken, Live-Updates, die Verwendung von Emojis, verschiedenen Schriftarten, Etiketten, beweglichen Panelteilen und Hover-Effekten ermöglichen. Um das Ganze zu veranschaulichen, haben wir ein Beispiel angeführt.
Autor: Allan Munene Mutiiria