Çaydanlıktan gelen sorular - sayfa 32

 
tol64 :
Bu nesne özelliklerini açıkça iletiyorum ( ANCHOR_RIGHT_UPPER, CORNER_RIGHT_UPPER ):

Gelmiş gibi görünüyor. Çalışan bir kod parçası değil, örnek bir işlev gösterdiniz mi?

Millet, hafta sonu alıyorum. Dikkat dağıttığım için özür dilerim :)

 

Bu işlevin daha mükemmel bir versiyonu, ancak bir şeyler ince ayar yapılabilir (ve genel olarak, tüm bunları bir nesne veya birkaç nesne biçiminde uygulardım).

Bununla birlikte, fonksiyon kütüphaneye yerleştirilebilir ve istediğiniz gibi kullanılabilir.

 bool Create_BMP_Label( long    chart_id,   // id графика
                       string bmp_nm,     // имя объекта
                       string bmp_path,   // путь к обекту
                       long    anchor,     // точка привязки
                       long    corner,     // угол привязки
                       int     x_dist,     // координата по шкале X
                       int     y_dist)     // координата по шкале Y
{
//----------------------------------------------------------------------------//
//Work variables
bool Result = true ; //Returned importance
//----------------------------------------------------------------------------//

ResetLastError ();

Result =   ObjectCreate (chart_id,bmp_nm, OBJ_BITMAP_LABEL , 0 , 0 , 0 ); // создание объекта

   if (Result)
  {
   ObjectSetString (chart_id,bmp_nm, OBJPROP_BMPFILE , 0 ,bmp_path);   // BMP файл
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_ANCHOR ,anchor);       // установка точки привязки
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_CORNER ,corner);       // установка угола привязки
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_XDISTANCE ,x_dist);     // установка координаты X
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_YDISTANCE ,y_dist);     // установка координаты Y
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_SELECTABLE , false );     // нельзя выделить объект, если FALSE
   ObjectSetString (chart_id,bmp_nm, OBJPROP_TOOLTIP , "\n" );         // нет всплывающей подсказки, если "\n"
  }
//The execution errors checking
   if ( GetLastError ()!= 0 )
  {
  Result = false ;
  }  
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}
 
Interesting :

Bu işlevin daha mükemmel bir versiyonu, ancak bir şeyler ince ayar yapılabilir (ancak genel olarak, tüm bunları bir nesne veya birkaç nesne biçiminde uygulardım).

Bununla birlikte, fonksiyon kütüphaneye yerleştirilebilir ve istediğiniz gibi kullanılabilir.



Güzel.)) Ve bir nesne şeklinde, bu işlevi örnek olarak kullanırsanız avantajı nedir? Bu arada her şeyi işlevler şeklinde uygularım. Belki yanlış yolda ilerliyorum ve sonra her şeyi yeniden yapmam gerekiyor?
 
tol64 :
Güzel.)) Ve bir nesne şeklinde, bu işlevi örnek olarak kullanırsanız avantajı nedir? Bu arada her şeyi işlevler şeklinde uygularım. Belki yanlış yolda ilerliyorum ve sonra her şeyi yeniden yapmam gerekiyor?

Peki, neden her şey. İşlev, örneğin bir kütüphanede daha evrensel hale getirilebilir ve paketlenebilir.

Sınıfların da avantajları vardır, ancak bunlar OOP ile ilgili püf noktalarıdır (asıl görev, kodu çeşitli projelerde uygulama hakkında düşünmeden kullanmak olacaktır).

Misal

Ekran görüntüsünden gördüğüm gibi, bir bilgi paneli gibi bir şeye sahipsiniz (belki başka bir işlevsellik), bu nedenle bu paneli bir dizi ilişkisiz nesne (grafik, metin ve diğerleri) olarak düşünebilirsiniz veya nesneler biçiminde yapabilirsiniz. bir sınıf tarafından bağlanır. Bu nedenle, bir "giriş" parametresi "Köşe" değişirse, böyle bir değişiklik panelle ilgili her şeyi etkiler.

Grafiğe referansla aynı şekilde, sınıfa grafiği belirlediğimizde, bu grafiği ve bu sınıfın yönettiği tüm nesneleri belirtiyoruz.

 
Interesting :

Peki, neden her şey. İşlev, örneğin bir kütüphanede daha evrensel hale getirilebilir ve paketlenebilir.

Sınıfların da avantajları vardır, ancak bunlar OOP ile ilgili püf noktalarıdır (asıl görev, kodu çeşitli projelerde uygulama hakkında düşünmeden kullanmak olacaktır).

Misal

Ekran görüntüsünden gördüğüm gibi, bir bilgi paneli gibi bir şeye sahipsiniz (belki başka bir işlevsellik), bu nedenle bu paneli bir dizi ilişkisiz nesne (grafik, metin ve diğerleri) olarak düşünebilirsiniz veya nesneler biçiminde yapabilirsiniz. bir sınıf tarafından bağlanır. Bu nedenle, bir "giriş" parametresi "Köşe" değişirse, böyle bir değişiklik panelle ilgili her şeyi etkiler.

Grafiğe referansla aynı şekilde, grafiği sınıfa belirttiğimizde, bu grafiği ve bu sınıfın yönettiği tüm nesneleri belirtiyoruz.

Çok dikkat çekici bir yeteneğin var. Her şeyi birkaç satırda çok net bir şekilde açıklayın. Teşekkür ederim. ))

İhtiyacım olan tüm fonksiyonları tanıdıktan ve onlarla pratik yaptıktan sonra yapıları, sınıfları ve OOP'yi incelemeye başlayacağım. Doğanın bazen sizi yatağa gitmeye zorlaması üzücü. Bilgisayardan sürünerek uzaklaşmalısın. ))

 

Bu komut dosyasını yazdı:

 bool del;

void OnStart ()
  {
   long chart_id  = ChartID ();
   int amount_obj = ObjectsTotal (chart_id, 0 , OBJ_LABEL );
   int i;
   
   Print ( "Всего объектов типа OBJ_LABEL: " ,amount_obj);
   
   for (i= 0 ; i<amount_obj; i++)
      {
       string name_obj = ObjectName (chart_id,i, 0 , OBJ_LABEL );
       del = ObjectDelete (chart_id,name_obj);
       
       if (del == false || GetLastError () != 0 ) Print (ErrorDescription( GetLastError ()), ", " , GetLastError ());
       
       ChartRedraw ();
      }
  }

Görev: OBJ_LABEL türündeki tüm nesneleri grafikten kaldırın. Ama bazıları atlanır ve kalır. Günlüğe bir hata yazılır:

Lütfen bana nasıl doğru yapacağımı söyle.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64 :

Bu komut dosyasını yazdı:

Görev: OBJ_LABEL türündeki tüm nesneleri grafikten kaldırın. Ama bazıları atlanır ve kalır. Günlüğe bir hata yazılır:

Lütfen bana nasıl doğru yapacağımı söyle.

Bana öyle geliyor ki, ayrıntılara girmesem de döngü artmamalı, azalmalı (ancak MQL4 günlerinden beri siparişler azalan bir döngüde silindi).

İşin püf noktası şu ki, büyük endekslerden silmeye başlarsanız, seçilen öğeyi (listenin kuyruğundan) silmek dışında orijinal liste değişmeyecektir ...

 
Interesting :

Bana öyle geliyor ki, ayrıntılara girmesem de döngü artmamalı, azalmalı (ancak MQL4 günlerinden beri siparişler azalan bir döngüde silindi).

İşin püf noktası şu ki, büyük endekslerden silmeye başlarsanız, seçilen öğeyi (listenin kuyruğundan) silmek dışında orijinal liste değişmeyecektir ...

Döngüyü sondan başlatmaya çalıştım:

   for (i=amount_obj- 1 ; i>=amount_obj; i--)

Artık günlükte hata yok, ancak tek bir nesne de silinmiyor.))

 
tol64 :

Döngüyü sondan başlatmaya çalıştım:

Artık günlükte hata yok, ancak tek bir nesne de silinmiyor.))

ben>=0
 
tol64 :

Dördünde bu yaklaşımı kullanıyorum: tüm nesneler gruptur, adın bir kısmı grupta ortaktır.

kaldırma

 // удаление по маске всех объектов индюка
   for ( int i = ObjectsTotal () - 1 ; i >= 0 ; i--)
    {
       string name = ObjectName (i);
       if ( StringFind (name, "sig_nal" ) == 0 )
      {
         ObjectDelete (name);
      }
    }

farklı gruplar için

 // удаление по маске всех объектов индюка
   for ( int i = ObjectsTotal () - 1 ; i >= 0 ; i--)
   {
       string name = ObjectName (i);
       if ( StringFind (name, "signal" ) == 0 )
      {
         ObjectDelete (name);
      }
       else if ( StringFind (name, "Asignal" ) == 0 )
      {
         ObjectDelete (name);
      }
   }

ve işte IgorM işlevi

***

(her ihtimale karşı) ObjectName'e göre sıralama (5ki ile ilgili olup olmadığını anlamadı)

[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум
  • www.mql5.com
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум
Neden: