Diskussion zum Artikel "DoEasy. Steuerung (Teil 31): Scrollen des Inhalts des ScrollBar-Steuerelements"
Für solche Arbeiten wird ein Denkmal errichtet werden wahrscheinlich auf mql5, Nachkommen))) Was ist eine Datei defines.mqh wert, in 4k Zeilen. Wenn man sich den Unterschied zwischen 70 Teilen und 131 Teilen ansieht, ist es erstaunlich, wie viel Arbeit darin steckt )))
Ich fand einen kleinen Fehler, in der Datei trading.mqh, SetPrices, hat die Sichtbarkeit privat, nicht geschützt, die Nachkommen können die Funktion nicht verwenden. Von der Datei TradingControl.mqh, CreatePReqClose(), gibt es Fehler der Verwendung.
private: template <typename PR,typename SL,typename TP,typename PL> bool SetPrices(const ENUM_ORDER_TYPE action,const PR price,const SL sl,const TP tp,const PL limit,const string source_method,CSymbol *symbol_obj);
Für solche Arbeiten wird ein Denkmal errichtet werden wahrscheinlich auf mql5, Nachkommen))) Was ist eine Datei defines.mqh wert, in 4k Zeilen. Wenn man sich den Unterschied zwischen 70 Teilen und 131 Teilen anschaut , ist es erstaunlich, wie viel Arbeit es ist )))
Ich fand einen kleinen Fehler, in der Datei trading.mqh, SetPrices, hat die Sichtbarkeit privat, nicht geschützt, die Nachkommen können die Funktion nicht verwenden. Von der Datei TradingControl.mqh, CreatePReqClose(), gibt es Fehler der Verwendung.
Ja. Dieser Fehler war mein Versehen und der Fehler des alten Compilers, der ihn übersehen hat. In den neuesten Versionen des Compilers wurde der Fehler erkannt und ich habe ihn behoben. In den neueren Versionen der Bibliothek befinden sich die Methoden im geschützten Bereich, nicht im privaten Bereich
Wäre es nicht besser, eine Struktur zu erstellen und Strings in ein CharArray-Array zu verwandeln?
ulong m_ticket; // Ticket des ausgewählten Auftrags/Geschäfts (MQL5) long m_long_prop[ORDER_PROP_INTEGER_TOTAL]; // Ganzzahlige Eigenschaften double m_double_prop[ORDER_PROP_DOUBLE_TOTAL]; // Wesentliche Eigenschaften string m_string_prop[ORDER_PROP_STRING_TOTAL]; // String-Eigenschaften
//--- Erzeugt ein neues Diagrammobjekt und gibt einen Zeiger auf das Diagrammkontrollobjekt zurück CChartObjectsControl *CreateNewStdGraphObjectAndGetCtrlObj(const long chart_id, const string name, int subwindow, const ENUM_OBJECT type_object, const datetime time1, const double price1, const datetime time2=0, const double price2=0, const datetime time3=0, const double price3=0, const datetime time4=0, const double price4=0, const datetime time5=0, const double price5=0) { //--- Wenn das Objekt mit der Diagramm-ID und dem Namen bereits in der Sammlung vorhanden ist - melden Sie es und geben Sie NULL zurück if(this.IsPresentGraphObjInList(chart_id,name)) { ::Print(DFUN,CMessage::Text(MSG_GRAPH_ELM_COLLECTION_ERR_GR_OBJ_ALREADY_EXISTS)," ChartID ",(string)chart_id,", ",name); return NULL; } //--- Wenn ein neues grafisches Standardobjekt nicht erstellt werden konnte - dies melden und NULL zurückgeben if(!CreateNewStdGraphObject(chart_id,name,type_object,subwindow,time1,price1,time2,price2,time3,price3,time4,price4,time5,price5)) { ::Print(DFUN,CMessage::Text(MSG_GRAPH_STD_OBJ_ERR_FAILED_CREATE_STD_GRAPH_OBJ),StdGraphObjectTypeDescription(type_object)); CMessage::ToLog(::GetLastError(),true); return NULL; } //--- Wenn das Zeitplan-Kontrollobjekt nicht erhalten werden konnte - melden Sie es CChartObjectsControl *ctrl=this.GetChartObjectCtrlObj(chart_id); if(ctrl==NULL) ::Print(DFUN,CMessage::Text(MSG_GRAPH_ELM_COLLECTION_ERR_FAILED_GET_CTRL_OBJ),(string)chart_id); //--- Rückgabe eines Zeigers auf das Zeitplan-Kontrollobjekt oder NULL, falls ein Fehler beim Empfang des Objekts auftritt return ctrl; }
Ich habe versucht, ein einfaches Objekt (Textbeschriftung) zu erstellen, aber es ist mir nicht gelungen.
Wie sollte das erstellte Objekt nach CreateNewStdGraphObject() in m_list_charts_control gelangen, um beim nächsten Aufruf ein Objekt ungleich Null zu erhalten?
CChartObjectsControl *ctrl=this.GetChartObjectCtrlObj(chart_id);
//--- Erzeugt ein grafisches Objekt "Text Label". bool CreateTextLabel(const long chart_id,const string name,const int subwindow,const bool extended, const int x,const int y, const string text,const int size,const ENUM_BASE_CORNER corner, const ENUM_ANCHOR_POINT anchor_point,const double angle) { string nm=this.m_name_program+"_"+name; ENUM_OBJECT type_object=OBJ_LABEL; CChartObjectsControl *ctrl=this.CreateNewStdGraphObjectAndGetCtrlObj(chart_id,nm,subwindow,type_object,0,0); if(ctrl==NULL) return false;
Gibt false zurück, bevor die Eigenschaftseinstellung erreicht wird.
//+------------------------------------------------------------------+ //| Gibt das Balkenobjekt nach Zeit in der Zeitreihe zurück | //+------------------------------------------------------------------+ CBar *CSeriesDE::GetBar(const datetime time) { CBar *obj=new CBar(); if(obj==NULL) return NULL; obj.SetSymbolPeriod(this.m_symbol,this.m_timeframe,time); this.m_list_series.Sort(SORT_BY_BAR_TIME); int index=this.m_list_series.Search(obj); delete obj; return this.m_list_series.At(index); }
Hier wird die Zeitreihe für mich nicht sortiert.... Die Methode Sort() in CArray sollte separat in einer geerbten Klasse implementiert werden, um Objekte zu sortieren, oder?

- 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 DoEasy. Steuerung (Teil 31): Scrollen des Inhalts des ScrollBar-Steuerelements :
In diesem Artikel werde ich die Funktionsweise des Scrollens des Inhalts des Containers mithilfe der Schaltflächen der horizontalen Bildlaufleiste implementieren.
Kompilieren Sie den EA und starten Sie ihn auf einem Chart:
Wie Sie sehen können, funktioniert der Bildlauf mit den Pfeiltasten gut. Wenn wir versuchen, den Schieberegler mit der Maus zu bewegen, „widersteht“ er, was natürlich ist - wir haben noch keine Verarbeitung der Schiebereglerverschiebung, aber wir haben bereits eine Neuberechnung seiner Größe und Koordinaten. Wenn wir also versuchen, den Schieberegler mit der Maus zu verschieben, wird er durch die Methode zum Festlegen seiner Koordinaten an die Position zurückgebracht, die der Position des Containerinhalts in seinem sichtbaren Bereich entspricht. Dieses Verhalten wird in den folgenden Artikeln näher erläutert.
Autor: Artyom Trishkin