Erreurs, bugs, questions - page 1455

 
Vasyl Nosal:

Voici le script.

Création d'un objet. Texte assigné.

Reconnaître le texte lui-même et sa taille.

Pourquoi reconnaît-il le texte mais pas la taille ?

Je viens de vérifier.

Même la couleur revient correctement.

Pourquoi la taille ne l'est pas ? C'est une sorte de tabou ?

Dossiers :
prob.mq4  1 kb
 
Vasyl Nosal:

Je viens de vérifier.

Même la couleur revient correctement.

Pourquoi la taille ne l'est pas ? C'est une sorte de tabou ?

Tant que l'étiquette de texte n'est pas rendue, la taille est inconnue. Qu'est-ce qui n'est pas clair ici ?
 
Vasyl Nosal:

Je viens de vérifier.

Même la couleur revient correctement.

Pourquoi la taille ne l'est pas ? C'est une sorte de tabou ?

Parce que l'objet n'a pas le temps d'être rendu, vous voulez trop...

string name="probe";
/////
void OnStart()
  {
   func();
   func();

   ObjectDelete(name);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void func()
  {
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
   ObjectSetString(0,name,OBJPROP_TEXT,name);

   Sleep(500);

   string text=ObjectGetString(0,name,OBJPROP_TEXT);

   int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
   Alert(text," ",text_sizeX);

  }
//+------------------------------------------------------------------+
 

Navigateur Opera

Opera 34.0

Faites-en plus sur le web

Informations sur la version

Version :34.0.2036.25- La version actualisée d'Opera est utilisée.
Canal de mise à jour :Stable
Système :Windows 10 64 bits (WoW64)

ID du navigateur

Mozilla/5.0 (Windows NT 10.0 ; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 OPR/34.0.2036.25

Lorsque vous insérez un nouveau message à l'aide de SRC, le texte SRC disparaît.

Lors de la mise à jour en utilisant/insérant le SRC, tout va bien.

 
Vladimir Pastushak:

parce que l'objet n'a pas le temps d'être rendu, vous en voulez trop...

C'est cool.

Maintenant, aidez-moi à implémenter ceci dans un indicateur et à le faire fonctionner sans ticks (le week-end).

 
Slawa:
Tant que l'étiquette de texte n'est pas rendue, la taille est inconnue. Qu'est-ce qui n'est pas clair ici ?

Avez-vous une solution à ce problème dans un indicateur, sans ticks ?

Et je l'ai déjà dit. Il est étrange que vous puissiez obtenir le texte lui-même sans rendu mais pas la taille.

 
Vasyl Nosal:

C'est cool.

Maintenant, aidez-moi à l'implémenter dans un indicateur et à le faire fonctionner sans ticks (le week-end).

---

//+------------------------------------------------------------------+
//|                                                        proba.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

string name="probe";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(1 /*переодичность в секундах*/); // 
                                                  // или
//bool  EventSetMillisecondTimer( 
//int  milliseconds      // количество миллисекунд 
//);
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ObjectSetString(0,name,OBJPROP_TEXT,name);
   string text=ObjectGetString(0,name,OBJPROP_TEXT);
   int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
   Alert(text," ",text_sizeX);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(name);
   EventKillTimer();
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

---

Merci. Mais il est fastidieux de connaître la taille du texte, pour ne pas dire plus.

Pourquoi est-il possible de connaître la taille du texte sans rendu mais pas la taille du texte ?

 
Vasyl Nosal:

Merci. Mais il est fastidieux de connaître la taille du texte, pour ne pas dire plus.

Pourquoi pouvons-nous connaître le texte lui-même sans le rendre mais pas sa taille ?

Peut-être que le texte à restituer est stocké dans une variable à partir de laquelle nous le récupérons et que vous devez créer un objet de plusieurs milliers de pixels pour créer le texte.

Et le code que je vous ai donné n'est qu'un exemple d'une mise en œuvre d'exécution.

 
Vasyl Nosal:

Avez-vous une solution à ce problème dans un indicateur, sans ticks ?

Et je l'ai déjà dit. Il est étrange que vous puissiez obtenir le texte lui-même sans rendu mais pas la taille.

Qu'est-ce que les tiques ont à voir avec ça ? Le graphique est dessiné sans tics.

La taille de l'étiquette de texte est déterminée à partir du contexte d'affichage à l'aide de la fonction win api GetTextExtent. Le contexte d'affichage donne ces informations en tenant compte de la résolution de l'écran et de la taille de police sélectionnée.

Lorsque vous créez un objet pour la première fois, il n'y a pas de contexte d'affichage. Vous pourriez, en principe, la créer, mais vous pourriez facilement vous retrouver dans une situation où la taille "artificiellement" calculée sera différente de celle qui a été réellement calculée lors du rendu effectif. Ainsi, tant que l'objet n'est pas rendu, sa taille est inconnue.

Raison: