Diskussion zum Artikel "Grafische Interfaces X: Text Edit Box, Bild Slider und einfache Controls (build 5)" - Seite 4

 
Artyom Trishkin:
Warum ist die leere Zeichenkette im Texteingabefeld nicht "" sondern " " "? Lange Zeit konnte ich nicht herausfinden, warum die Prüfung auf eine leere Zeichenkette nicht funktioniert....

Ich weiß nicht, warum. Es wird mit einer leeren Zeichenkette ("") initialisiert. Sie können sich selbst davon überzeugen, indem Sie im Konstruktor der Klasse CTextEdit nachsehen:

//+------------------------------------------------------------------+
//| Konstruktor|
//+------------------------------------------------------------------+
CTextEdit::CTextEdit(void) : m_edit_value(""),
                             m_reset_mode(false),
                             m_show_text_pointer_mode(false),
                             m_align_mode(ALIGN_LEFT),
                             m_text_edit_state(true),
                             m_area_color(clrNONE),
                             m_icon_x_gap(0),
                             m_icon_y_gap(3),
                             m_icon_file_on(""),
                             m_icon_file_off(""),
                             m_label_text(""),
                             m_label_x_gap(0),
                             m_label_y_gap(4),
                             m_label_color(clrBlack),
                             m_label_color_hover(C'85,170,255'),
                             m_label_color_locked(clrSilver),
                             m_edit_y_size(20),
                             m_edit_x_gap(50),
                             m_edit_y_gap(0),
                             m_edit_color(clrWhite),
                             m_edit_color_locked(clrWhiteSmoke),
                             m_edit_text_color(clrBlack),
                             m_edit_text_color_locked(clrSilver),
                             m_edit_text_color_highlight(clrRed),
                             m_edit_border_color(clrSilver),
                             m_edit_border_color_hover(C'85,170,255'),
                             m_edit_border_color_locked(clrSilver)

  {
//--- Speichern des Namens der Elementklasse in der Basisklasse
   CElementBase::ClassName(CLASS_NAME);
//--- Prioritäten für das Drücken der linken Maustaste setzen
   m_area_zorder  =1;
   m_label_zorder =0;
   m_edit_zorder  =2;
  }
 
Anatoli Kazharski:

Ich weiß nicht, warum. Sie wird mit einer leeren Zeichenkette ("") initialisiert. Sie können sich selbst davon überzeugen, indem Sie im Konstruktor der Klasse CTextEdit nachsehen:

...

Ja, das habe ich. Deshalb konnte ich auch nicht verstehen, warum die Bedingung, nach "" zu suchen, nach der Initialisierung nicht funktioniert. Dann fiel mir auf, dass, wenn der Cursor im Eingabefeld platziert wird, dort ein breiter Raum entsteht - genau die Größe eines Leerzeichens (ungefähr so: ). Ich prüfte auf " " und alles funktionierte.
 
Pavel Kolchin:

gibt diese Fehlermeldung aus, wenn ich eine Verbindung herstelle (sie beeinträchtigt die Arbeit nicht)

cannot load custom indicator 'C:\MetaTrader\MT5 demo\MQL5\Experts\new_menue_fc_1.00.ex5::Indicators\SubWindow.ex5' [4802]

CWndEvents::DetermineSubwindow > Ошибка при получении хэндла индикатора в директории ::Indicators\SubWindow.ex5 !

Ich verwende diese Version der Bibliothek, die Menüs befinden sich in den Hauptgrafiken.

wo es in den Dateien verbunden ist, kann ich es nicht finden
 
Pavel Kolchin:
wo sie in den Dateien verbunden ist, ich kann sie nicht finden

In der Hauptdatei der MQL-Anwendung, die Sie testen, löschen Sie diese Zeile:

//+------------------------------------------------------------------+
//|TestLibrary05.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. | |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- Anschluss des Indikators für den Modus "Experte im Unterfenster".
#resource "\\Indicators\\SubWindow.ex5"
 
Anatoli Kazharski:

In der Hauptdatei der MQL-Anwendung, die Sie testen, löschen Sie diese Zeile:

#resource "\\Indicators\\SubWindow.ex5"
Das ist die Sache, sie ist gelöscht
 
Pavel Kolchin:
Das ist das Problem, es wird gelöscht

Setzen Sie in der Datei Defines.mqh den Parameter EXPERT_IN_SUBWINDOW auf false:

//+------------------------------------------------------------------+
//|Definiert.mqh |
//| Copyright 2015, MetaQuotes Software Corp. | |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
//--- Experte im Fenstermodus
#define EXPERT_IN_SUBWINDOW false
 
Anatoli Kazharski:

Setzen Sie in der Datei Defines.mqh den Parameter EXPERT_IN_SUBWINDOW auf false:

 
Pavel Kolchin:
Großartig! )
 
Gibt es einen Grund dafür, dass der Modus "Experte im Unterfenster" in der Datei Defines.mqh standardmäßig auf true gesetzt wurde?
//--- Modus "Experte im Unterfenster"
#define EXPERT_IN_SUBWINDOW true

Dies führt zu Fehlern, wenn der Experte nicht im Unterfenster verwendet wird.
Ich habe in der Datei "Defines.mqh" die Einstellung auf "false" geändert, und bis jetzt scheint alles korrekt zu funktionieren.

 
Lieber Anatoli, herzlichen Glückwunsch, Ihre Schnittstelle ist sehr nützlich, einfach und awsome. Ich nahm für meine EAs und Indikatoren. Ich danke dir wirklich für alles. Bitte, machen Sie weiter und weiter!