Paneller ve diyaloglar oluşturmak için sınıflar - sayfa 3

 
Slawa :

Semptomlar neler?

Dmitry, ana grafik penceresinde oluşturulacak alt pencerede (indicator_separate_window) bulunan göstergenin grafik arayüzüne ihtiyaç duyar.
 
Dmitry Fedoseev :
Böyle

Genel olarak, benim de küçük bir sorunum vardı. ) Bu mod, yani " gösterge alt pencerede ve grafik arayüzü ana grafik penceresinde ", daha önce kitaplığımda test edilmedi ve şimdi mümkün olmadığı için küçük bir hata bulundu. kapat düğmesine tıklayarak göstergeyi kaldırmak ve ayrıca alt pencerelere diğer göstergeleri yerleştirdikten/kaldırdıktan sonra alt pencere numarasının belirlenmesinde çakışma meydana geliyor ve bu da bazı durumlarda hatalı olay işlemeye neden oluyor.

Bu mod için kitaplığı sonlandıracağım, ancak biraz sonra sonraki sürümlerden birinde mevcut olacak. Her şeyin farklı durumlarda dikkatlice test edilmesi gerektiğinden, bu biraz zaman alacaktır.

Alternatif olarak, daha önce test edilmiş ve işe yaramış olanlardan aşağıdakileri sunabilirim. Gösterge panelini gösterge alt penceresine yerleştirmenin çeşitli yolları vardır. Aynı zamanda, aşağıdaki ekran görüntülerinde gösterildiği gibi, paneli (1) gösterge alt penceresiyle birlikte veya (2) gösterge alt penceresine dokunmadan yalnızca paneli simge durumuna küçültebileceğiniz birkaç mod vardır. Bir alt pencere (1) sabit yükseklikte veya (2) manuel yeniden boyutlandırma için serbest olabilir. Ancak bu durumda bile, hala bir sınırlama var. Bir çizelgede grafik arayüzü olan sadece bir MQL uygulaması olabilir. Aksi takdirde, çatışmalar ortaya çıkacaktır.

//---

Önerilen seçenekler uygunsa, şablonları hazırlayacağım. Değilse, ne yazık ki size daha fazla yardımcı olamam.

Testler için arşiv dosyalarında:

Dosyalar:
Test.zip  8 kb
 
Slawa :

Hiçbir şey buggy değil. Semptomlar neler?

Sadece denedim. İlk olarak, alt penceredeki gösterge. Ardından tablodaki Panel. Sonra bir alt pencerede benzer bir panel. Gördüğüm tek şey, ilk alt penceredeki SimplePanel2 yazısıydı. Ama çalışmayı etkilemez. Tüm düğmelere doğru şekilde basıldığında

SimplePanel2 ve SimplePanel arasındaki tek fark, gösterge_chart_window özelliğidir.

Grafik penceresi için SimplePanel'i yeniden yapmaya çalıştım, aynı zamanda iyi çalışıyor. Her ikisi de alt pencerede ve grafikte ve alt pencerede düzenli bir gösterge olduğunda çalışır. Ancak, her iki SimplePanels (fiyat tablosunda ve alt pencerede), daha sonra alt pencerede standart gösterge başlatıldığında, fiyat tablosunda hatalı olan panel - pencere daraltılır, genişletmeye çalıştığınızda, açılır bir an ve tekrar çöker.

Bir alt pencereye standart bir gösterge eklerken benimki hatalı. Dahil edilen dosyanın kodu:

#include <Controls\Dialog.mqh>
#include <Controls\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\Label.mqh>

#define INDENT 11
#define LINE   20

class CPanTest: public CAppDialog{
   protected :
      CComboBox         m_cmb_main;
      CEdit             m_edit1;
       void OnMainEvent(){
      }    
       void OnControlEvent(){
      }        
   public :
       bool Create(){
         if (!CAppDialog::Create( 0 , "name" , 0 , 20 , 20 , 200 , 300 )){
             return ( false );  
         }
         return ( true );    
      }  
       bool OnEvent( const int id, const long &lparam, const double &dparam, const string &sparam);
};

EVENT_MAP_BEGIN(CPanTest)
   ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent)
   ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent)
EVENT_MAP_END(CAppDialog)

Gösterge:

#property version    "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots    0

#include <CPanTest.mqh>

CPanTest * pan;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit (){
   pan= new CPanTest();
   if (!pan.Create()){  
       return ( INIT_FAILED );
   }
   if (!pan.Run()){
     return ( INIT_FAILED );  
   }  
   return ( INIT_SUCCEEDED );
}

void OnDeinit ( const int reason){
   pan.Destroy();
   delete (pan);
}  

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);
}

void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
{
   pan.ChartEvent(id,lparam,dparam,sparam);
}
 
Anatoli Kazharski :

Genel olarak, benim de küçük bir sorunum vardı. ) Bu mod, yani " gösterge alt pencerede ve grafik arayüzü ana grafik penceresinde ", daha önce kitaplığımda test edilmedi ve şimdi mümkün olmadığı için küçük bir hata bulundu. kapat düğmesine tıklayarak göstergeyi kaldırmak ve ayrıca alt pencerelere diğer göstergeleri yerleştirdikten/kaldırdıktan sonra alt pencere numarasının belirlenmesinde çakışma meydana geliyor ve bu da bazı durumlarda hatalı olay işlemeye neden oluyor.

Bu mod için kitaplığı sonlandıracağım, ancak biraz sonra sonraki sürümlerden birinde mevcut olacak. Her şeyin farklı durumlarda dikkatlice test edilmesi gerektiğinden, bu biraz zaman alacaktır.

Alternatif olarak, daha önce test edilmiş ve işe yaramış olanlardan aşağıdakileri sunabilirim. Gösterge panelini gösterge alt penceresine yerleştirmenin çeşitli yolları vardır. Aynı zamanda, aşağıdaki ekran görüntülerinde gösterildiği gibi, paneli (1) gösterge alt penceresiyle birlikte veya (2) gösterge alt penceresine dokunmadan yalnızca paneli simge durumuna küçültebileceğiniz birkaç mod vardır. Bir alt pencere (1) sabit yükseklikte veya (2) manuel yeniden boyutlandırma için serbest olabilir. Ancak bu durumda bile, hala bir sınırlama var. Bir çizelgede grafik arayüzü olan sadece bir MQL uygulaması olabilir. Aksi takdirde, çatışmalar ortaya çıkacaktır.

//---

Önerilen seçenekler uygunsa, şablonları hazırlayacağım. Değilse, ne yazık ki size daha fazla yardımcı olamam.

Testler için arşiv dosyalarında:

Kutunun içinde olsun. Alt pencerede serbestçe asılı olan, alt pencereden bağımsız olarak katlanan ve alt pencere ölçeklenebilen şey.
 
Dmitry Fedoseev :
Kutunun içinde olsun. Alt pencerede serbestçe asılı olan, alt pencereden bağımsız olarak katlanan ve alt pencereyi ölçeklendirmek moda oldu.

Şablonlu arşiv dosyası. Soru varsa cevaplarım.

Dosyalar:
Test.zip  4 kb
 
Anatoli Kazharski :

Şablonlu arşiv dosyası. Soru varsa cevaplarım.

Bir aksilik oldu:

 
Dmitry Fedoseev :

Bir aksilik oldu:

Ve zaten bir sonraki sürüm için devam eden değişikliklerim var. Her şeyi bir araya getiriyorum. )

Son makaledeki sürüm için düzeltildi. Bir deneme daha.

Dosyalar:
Test.zip  4 kb
 
Anatoli Kazharski :

Ve zaten bir sonraki sürüm için devam eden değişikliklerim var. Her şeyi uyumlu hale getiriyorum. )

Son makaledeki sürüm için düzeltildi. Bir deneme daha.

Eh... biraz daha... Şimdi kaynak eksikliği konusunda çok fazla hata var.
 
Dmitry Fedoseev :
Eh... biraz daha... Şimdi kaynak eksikliği konusunda çok fazla hata var.
Kütüphanede kullanılan tüm kaynaklar serinin son makalesine eklenmiştir. Günlükteki mesajlar nelerdir?
 
Anatoli Kazharski :
Kütüphanede kullanılan tüm kaynaklar serinin son makalesine eklenmiştir. Günlükteki mesajlar nelerdir?
Kaynak eksikliği ile ilgili mesajlar.
Neden: