Discussion de l'article "MQL pour "Nuls" : Comment Concevoir et Construire des Classes d'Objets" - page 2

 

Je viens de mettre à jour le terminal vers un terminal téléchargeable pour m'en assurer.

J'ai mis à jour la bibliothèque, c'est certain.

J'ai lancé le terminal, ouvert le fichier et le voici.

J'ai vraiment aimé le regroupement des boutons =))))))

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

Pourriez-vous télécharger tous les fichiers nécessaires à cette application dans une seule archive et respecter la structure afin qu'il n'y ait qu'un seul dossier MQL5.

J'ai vérifié que tous les fichiers s'ouvrent normalement et que leur contenu est lisible.

 
CoreWinTT:

Pourriez-vous télécharger tous les fichiers nécessaires à cette application dans une seule archive et respecter la structure afin qu'il n'y ait qu'un seul dossier MQL5.

J'ai vérifié que tous les fichiers s'ouvrent normalement et que leur contenu est lisible.

Je vous ai envoyé un message privé.
 

Merci.

Maintenant tout fonctionne, il compile normalement, le problème venait peut-être d'un fichier bit qui a été téléchargé sur le serveur de façon incorrecte, ou j'ai peut-être eu une erreur lors du téléchargement, mais je ne l'ai pas remarquée.

En général, il est très peu pratique de télécharger individuellement le nombre de fichiers supérieur à 5, il serait bien de faire une archive ou un programme d'installation complet.

Je vais continuer à comprendre et à essayer de le mettre quelque part, je ferai un rapport sur les résultats.

Dans l'ensemble, j'aime beaucoup le fonctionnement du bouton de croix.

Mais le bouton de minimisation est décevant ........

ne fonctionne pas, et dans l'idée, si j'ai bien compris, il devrait minimiser en dessous des lignes suivantes ?

 

En général, l'article est assez instructif. Seulement, il y a beaucoup de références à "wikipedia".

Et donc il s'avère que c'est un constructeur professionnel pour un tel menu, sur lequel tout est cliqué et ajouté, en général ça marche.

Il serait également très agréable d'avoir un manuel simple sur la façon d'accéder aux cellules de ce miracle.

et supposons que l'Expert Advisor lise les valeurs des cellules au moment du tick.

et ces cellules seraient remplies avec des paramètres d'entrée pendant le processus oninit.

Ou dois-je écrire une telle chose moi-même ? ? ???

et que cela serve de constructeur visuel ?

 

Merci pour vos précieux commentaires. J'y ai déjà réfléchi et j'essaierai de corriger la plupart d'entre eux.

 

du type à former un ensemble de structures

qui sera disponible pour l'ensemble du programme

et qui stockeront des données dans ce format

et de pouvoir faire référence à ces valeurs

en tant que colonne Header[1].2.

au moins avec le type de données string

Je vois qu'il existe déjà quelque chose de similaire ici.

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

comme un tableau à deux dimensions.

et il se plaint si vous faites quelque chose comme ça.

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


probablement que getter et setter ne peuvent pas diviser l'encapsulation.

 

Chaque cellule porte un nom unique. Vous pouvez le voir en passant le curseur de la souris sur l'objet. Le fichier ClassMasterWindowsEXE.mqh montre comment accéder aux cellules.

//+------------------------------------------------------------------+
//| Méthode d'interception et de traitement des événements OnChartEvent() |
//+------------------------------------------------------------------+
void CMasterWindowsEXE::OnEvent(const int id,
                                const long &lparam,
                                const double &dparam,
                                const string &sparam)
  {
   if(on_event) // la gestion des événements est activée
     {
      //--- en appuyant sur le bouton START dans la fenêtre principale
      if(id==CHARTEVENT_OBJECT_CLICK
         && StringFind(sparam,"CWin1",0)>=0
         && StringFind(sparam,"STR19",0)>0
         && StringFind(sparam,".Button",0)>0)
        {
         Generator();
        }
      //--- modifier les variables dans l'éditeur EDIT STR18
      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("Le nom du fichier ne doit pas contenir de point !,"Erreur de nom de fichier.,MB_OK);
           }
         else nameFile=textedit;
        }
 

mais ici, tous les paramètres de la chaîne de caractères s'avèrent être

c'est-à-dire que pour chaque bouton, il sera nécessaire d'écrire un événement tel que

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

pour le bouton +

extraire la valeur de la chaîne telle et telle, la convertir en entier, ajouter un et remettre.

et dans l'événement ontic

juste après

extraire la valeur de la chaîne telle et telle là convertir en entier etc. etc.

en général, s'il existait une structure, on pourrait définir le type des objets stockés, et le module de transfert de valeur dans la chaîne de caractères pourrait être implémenté à l'intérieur de la classe.

J'ai bien compris que le suivi, par exemple, d'une cellule plus peut se faire en insérant du code dans un événement.

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

 
et je me demande également si le bouton de minimisation fonctionnera.