Diskussion zum Artikel "MQL für Anfänger: Wie man Objektklassen entwirft und baut" - Seite 2

 

Ich habe gerade das Terminal auf eine herunterladbare Version aktualisiert, um sicherzugehen.

die Bibliothek aktualisiert, das ist sicher.

habe das Terminal gestartet, die Datei geöffnet und hier ist sie.

Mir gefällt die Gruppierung der Schaltflächen sehr gut =))))))

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 

Könnten Sie bitte alle notwendigen Dateien für diese Anwendung in einem Archiv hochladen und die Struktur so einhalten, dass es einen MQL5-Ordner gibt.

Ich habe überprüft, dass alle Dateien normal geöffnet werden und lesbaren Inhalt haben.

 
CoreWinTT:

Könnten Sie bitte alle notwendigen Dateien für diese Anwendung in einem Archiv hochladen und die Struktur so einhalten, dass es einen MQL5-Ordner gibt.

Ich habe überprüft, dass alle Dateien normal geöffnet werden können und einen lesbaren Inhalt haben.

in einer privaten Nachricht an Sie gesendet.
 

Danke!

Jetzt funktioniert alles, es kompiliert normal, vielleicht war das Problem in einer Bit-Datei, die entweder falsch auf den Server hochgeladen wurde, oder ich kann einen Fehler beim Herunterladen gehabt haben, aber ich habe nicht bemerkt.

Im Allgemeinen ist es sehr unbequem, die Anzahl der Dateien einzeln herunterzuladen, mehr als 5, es wäre toll, ein Archiv oder ein ganzes Installationsprogramm zu machen.

Ich werde weiter zu verstehen und versuchen, es irgendwo zu setzen, werde ich über die Ergebnisse berichten.

Insgesamt gefällt mir die Funktion der Kreuztaste sehr gut.

aber die Schaltfläche zum Minimieren ist enttäuschend ........

funktioniert nicht, und in der Idee, wie ich es verstanden habe, sollte es unter den folgenden Zeilen minimieren?

 

Im Allgemeinen recht informativer Artikel. nur eine Menge Verweise auf "wikipedia".

Und so stellt sich heraus, dass es ein professioneller Konstruktor für ein solches Menü ist, auf dem alles angeklickt und hinzugefügt wird, im Allgemeinen funktioniert es.

Es wäre auch sehr schön, wenn man eine einfache Anleitung hätte, wie man auf die Zellen dieses Wunders zugreifen kann.

und nehmen wir an, dass der Expert Advisor beim Tick-Ereignis Werte aus den Zellen liest.

und diese Zellen würden während des Oninit-Prozesses mit Eingabeparametern gefüllt werden.

Oder muss ich so etwas selbst schreiben????

und das dient dann als visueller Konstruktor?

 

Vielen Dank für die wertvollen Kommentare. Ich habe bereits über sie nachgedacht und werde versuchen, die meisten davon zu beheben.

 

des Typs, um eine Reihe von Strukturen zu bilden

die dem gesamten Programm zur Verfügung stehen werden

und die Daten in diesem Format speichern sollen

und um auf diese Werte verweisen zu können

als Header[1].2-Spalte.

zumindest mit dem Datentyp string

Ich sehe, dass es hier bereits etwas Ähnliches gibt.

string Mstr[][3]=
  {
     {"MACD","",""},
     {"NEW1","metod",""},
     {"elders","new2",""},
     {"Fast","new3",""},
     {"Slow","new4",""},
     {"Signal","new5",""},
     {}
  };

wie ein zweidimensionales Array.

und es schimpft, wenn man so etwas macht.

     {"NEW1",""+TrailingStop+"",""},


wahrscheinlich können getter und setter die Kapselung nicht aufteilen.

 

Jede Zelle hat ihren eigenen, eindeutigen Namen. Sie können ihn sehen, wenn Sie mit dem Mauszeiger über das Objekt fahren. Die Datei ClassMasterWindowsEXE.mqh zeigt, wie man auf Zellen zugreifen kann.

//+------------------------------------------------------------------+
//| Methode zum Abfangen und Verarbeiten von Ereignissen OnChartEvent() |
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // Ereignisbehandlung ist aktiviert
     {
      //--- Drücken der Taste START im Hauptfenster
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //--- Variablen im Editor EDIT STR18 bearbeiten
      if(id==CHARTEVENT_OBJECT_ENDEDIT
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR18",0)>0)
        {
         string textedit=ObjectGetString(0,sparam,OBJPROP_TEXT);
         if(StringFind(textedit,".",0)>=0)
           {
            ObjectSetString(0,sparam,OBJPROP_TEXT,"");
            ChartRedraw();
            MessageBox("Der Dateiname darf keinen Punkt enthalten!","Fehler beim Dateinamen".,MB_OK);
           }
         else nameFile=textedit;
        }
 

aber hier stellen sich alle String-Parameter als

und das bedeutet, dass für jede Schaltfläche ein Ereignis geschrieben werden muss, wie zum Beispiel

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,CWin1.STR2.RowType3.Button3,0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }

für Schaltfläche +

extrahiere den Wert aus der Zeichenkette such and such, wandle ihn in eine Ganzzahl um, addiere einen Wert und füge ihn wieder ein.

und in dem Ereignis ontic

nur dann

extrahiere den Wert aus der Zeichenkette so und so, konvertiere ihn in eine ganze Zahl usw. usw.

im Allgemeinen, wenn es so etwas wie eine Struktur, so dass Sie den Typ der gespeicherten Objekte setzen könnte, und das Modul der Wertübertragung in String könnte innerhalb der Klasse implementiert werden.

Ich habe richtig verstanden, dass die Verfolgung von z.B. einer Pluszelle durch Einfügen von Code in ein Ereignis erfolgen kann.

  if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1.STR2.RowType3.Button3",0)>=0)
        {
         Generator();
        }

 
und ich frage mich auch, ob die Schaltfläche "Minimieren" funktionieren wird.