Eingabefeld erstellen
Ich stehe mal wieder auf dem Schlauch und komme nicht weiter.
Ich wollte gerne ein Eingabefeld erstellen worüber ich Variablen ändern wollte. Dazu dachte ich wäre OBJ_Edit die richtige Wahl. Nur leider hänge ich da bei der Umsetzung fest. Ich kann noch nicht einmal sagen wo der Fehler, Denkfehler liegt, denn ich habe zwar beim kompilieren kein Fehlermeldung, jedoch beim Ausführen auch keine Reaktion. Zuerst einmal geht es mir um die Funktion. Code:
//+------------------------------------------------------------------+ Wäre für jeden Tipp dankbar. |
Ja, das ist in der Tat schwieriger, aber nachdem Du nun schon so gut mit Buttons umgehen kannst, sollte Dir die Adaption auf ein Editfeld nicht so schwer fallen.
Beim Button wurde als Ereignis CHARTEVENT_OBJECT_CLICK benutzt. Beim Edit wird stattdessen CHARTEVENT_OBJECT_ENDEDIT benutzt. Der Rest ist nahezu identisch zur Vorgehensweise bei Buttons. Nur dass dann wie beim Button kein Code zur Ausführung angesprungen wird, sondern beim Edit muß dann das Eingabefeld ausgelesen werden über ObjectGetString(). Evtl. hilfreich immer mal wieder ins MQL4-Forum zu gehen und die Suchfunktion benutzen, z.B. nach CHARTEVENT_OBJECT_ENDEDIT: https://www.mql5.com/en/articles/689 Nicht an dem MQL5 stören lassen! traderdoc |
Vielen Dank! Denke jetzt werde ich es mit ein wenig ausprobieren hinbekommen. Hoffe nur ich kostruiere keine zu umständliche Lösung.
|
Zu früh gefreut. Inzwischen bin ich zwar soweit, dass das Eingabefeld erstellt wird. Ich kann auch einen Wert eintragen, aber dann wird dieser nicht übernommen.
|
Im Moment sieht es so aus. Ich habe eine Funktion zum erstellen eines Eingabefeldes.
Code:
void CreateEdit(string name, int xdist, int ydist, int xsize, int ysize, string text, string font, int font_size, color font_color, color background_color, color border_color) { Code:
CreateEdit("InpLot", XButton14, YButton14, XSize14, YSize14, "Eingabe *klicken*", TextFont, FontSize, FontColor, SelectedColor, SelectedColor); Ich dachte mit der Zeile "string Input....." würde ich den neu eingegebenen Wert abrufen. Im Anschluss zu einer double Variablen umwandeln und diese Variable dann noch ausgeben. Habe ich die Abfrage if(id == CHARTEVENT_OBJECT_ENDEDIT) an der falschen Stelle platziert? Oder brauche ich noch eine weitere Abfrage? |
Code:
#property strict |
Hast du den "if(id = CHARTEVENT_..."-Block unter OnChartEvent(...) stehen ??
Dort werden sämtliche Events verarbeitet... |
@GoS: Ja, das habe ich.
@Pako: Habe den Code mal ausprobiert und bei mir passiert da genauso wenig wie bei meinem eigenen. |
Zitat:
Vor @pakos Code stand Deiner, in dem tatsächlich das if(id == CHARTEVENT_OBJECT_ENDEDIT) { an der falschen Stelle stand. Der Code von @pako funktioniert schon! traderdoc |
@Traderdoc: Ich sollte wirklich nicht zuviel parallel erledigen. Ich bin wohl nicht so Multitaskingfähig wie ich gerne hätte.
Die if(id == CHARTEVENT_OBJECT_ENDEDIT) Abfrage muss auf der selben Ebene wie die if(id == ChartEVENT_Object_Click) Abfrage, oder? Und dann kann ich wie Du es in dem Pulldown-Menü gemacht hast vorgehen. Als erstes eine string Variable erstellen und dort den Wert "sparam" speichern. Danach das gewünschte Eingabefeld auswählen und das Textfeld mit "ObjectGetString" auslesen. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:31 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum