Hatalar, hatalar, sorular - sayfa 1456

 
Vasyl Nosal :

Göstergede keneler olmadan bu soruna bir çözümünüz var mı?

Ve zaten konuştum. Metnin kendisinin oluşturulmadan elde edilebilmesi garip, ancak boyut değil.

Tiklerin nesi var? Grafik, keneler olmadan bile çizilir.

Metin etiketinin boyutu, win api işlevi GetTextExtent kullanılarak görüntüleme bağlamından bulunur. Görüntü bağlamı, bu bilgiyi ekran çözünürlüğüne ve seçilen yazı tipi boyutuna göre döndürür.

Bir nesneyi ilk oluşturduğunuzda, bağlam görüntüsü yoktur. Prensip olarak, oluşturulabilir, ancak "yapay olarak" hesaplanan boyutun, gerçek oluşturma sırasında gerçekte hesaplanandan farklı olacağı bir duruma kolayca girebilirsiniz. Bu nedenle - nesne oluşturulana kadar boyutu bilinmiyor

[Silindi]  
Vasyl Nosal :
Oluşturduktan sonra ChartRedraw()'ı kullanmayı deneyin, ardından boyutu kontrol edin.
[Silindi]  
Alexey Kozitsyn :
Oluşturduktan sonra ChartRedraw() kullanmayı deneyin, ardından boyutu kontrol edin.
yardımcı olmuyor
 
Vasyl Nosal :
yardımcı olmuyor

Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.

Bunun gibi bir şey - ilk tikte oluşturduğumuz VE SONRAKİ tikte BOYUT İSTİYORUZ:

 //+------------------------------------------------------------------+
//|                                               TestIndicator1.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" ;
bool first_tick= false ; // false - ещё не было тиков
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping

//---
   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[])
  {
//---
   static int count;
   if (count> 3 )
       return (rates_total); // после трёх Алертов выходим. Не за чем слух портить.
   if (!first_tick)
     {
       ObjectCreate ( 0 ,name, OBJ_LABEL , 0 , 0 , 0 );
       ObjectSetString ( 0 ,name, OBJPROP_TEXT ,name);
      first_tick= true ;
     }
   else
     {
       string text= ObjectGetString ( 0 ,name, OBJPROP_TEXT );
       int text_sizeX= int ( ObjectGetInteger ( 0 ,name, OBJPROP_XSIZE ));
       Alert (text, " " ,text_sizeX);
     }
   count++;
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Deinit                                                           |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ObjectDelete (name);
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
[Silindi]  
Karputov Vladimir :

Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.

Bunun gibi bir şey - yarattığımız ilk tikte VE SONRAKİ tikte BOYUT İSTİYORUZ:

İyi. Hafta sonu birkaç kene simülasyonu yapıyorum.
[Silindi]  
Nesnenin oluşturulup oluşturulmadığını döndürecek bir işlev var mı?
 
Vasyl Nosal :
İyi. Hafta sonu birkaç kene simülasyonu yapıyorum.
Wi-Fi'yi kapatın, Cumartesi sizinle olacağız :).
 
Vasyl Nosal :
Nesnenin oluşturulup oluşturulmadığını döndürecek bir işlev var mı?
Boyut için metin etiketi isteyin
 
ve WindowRedraw bir onay beklememeye yardımcı olmaz mı?
[Silindi]  
Alexandr Bryzgalov :
ve WindowRedraw bir onay beklememeye yardımcı olmaz mı?
Numara.