Mümkün mü? - sayfa 8

 
Vitaly Muzichenko # :

Forumda bir yerde mql4 ve mql5 için tam çalışma kodu

Yaklaşık bir yıl önce yazdım.

Hangi konuda veya nasıl arama yapılır?

 
Andrey Sokolov # :

Hangi konuda veya nasıl arama yapılır ?

İşte sitede ilkel bir arama ile büyük bir soru, yoksa kendim bulurdum.

 
Belki de bu ?
 
Vasiliy Pushkaryov # :
Belki de bu ?

Teşekkürler

 
Andrey Sokolov # :

Teşekkürler

Orada, bu konunun en son gönderisinde, düzenlenmiş versiyon ve kaynak
 
Andrey Sokolov # :

Merhaba, lütfen bana nasıl yaptığını gösterir misin?

Kaydırma çubuğunun istemci alanındaki diziden Etiketlere, bu Kaydırma çubuğunun ofsetine eşit bir ofset ile veri çıktısı alırsınız. Kaydırma çubuğu olarak CScrollV'yi standart kitaplıktan alabilirsiniz. Dizi - tüm öğeleri (öğeleri) içeren bir liste. Etiketler - listedeki öğeleri görüntülemek için alan. Bu kadar karmaşık olan nedir?... İstenirse, OOP ile arkadaş olan herhangi bir programcı bunu halledebilir.

 
Mihail Matkovskij # :

Kaydırma çubuğunun istemci alanındaki diziden Etiketlere, bu Kaydırma çubuğunun ofsetine eşit bir ofset ile veri çıktısı alırsınız. Kaydırma çubuğu olarak CScrollV'yi standart kitaplıktan alabilirsiniz. Dizi - tüm öğeleri (öğeleri) içeren bir liste. Etiketler - listedeki öğeleri görüntülemek için bir alan. Bu kadar karmaşık olan nedir?... İstenirse, OOP ile arkadaş olan herhangi bir programcı bunu halledebilir.

SB'den gelen parşömeni anladın mı? Nedense, istemci paneli olmadan grafik üzerinde ayrı çalışmasını sağlayamadım. Belki yardım edebilirsin?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

"Herhangi bir karmaşıklığın grafik paneli nasıl oluşturulur ve nasıl çalışır" makalesinin tartışılması

Vasily Pushkaryev , 2021.12.21 10:12

Bir panele bağlı kalmadan, sadece bir grafik üzerinde dikey bir kaydırma çubuğu oluşturmaya çalışıyorum ama nedense çalışmıyor.

Örneğin, bir onay kutusuyla, bu kod bir fare tıklamasına yanıt verir. Kene görünür ve kaybolur.

 #include <Controls\CheckBox.mqh>
CCheckBox Chbox;
//+------------------------------------------------------------------+
void OnInit ()
{
  Chbox.Create( 0 , "MyCheckBox" , 0 , 20 , 20 , 100 , 40 );
   ChartRedraw ();
}
//+------------------------------------------------------------------+
void OnChartEvent ( const int id, const long & lparam, const double & dparam, const string & sparam)
{
  Chbox.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+


Ve dikey kaydırma ile - fare tıklamalarına tepki yok.

 #include <Controls\Scrolls.mqh>
CScrollV Scroll;

void OnInit ()
{
  Scroll.Create( 0 , "MyScrollV" , 0 , 20 , 20 , 40 , 200 );
   ChartRedraw ();
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id, const long & lparam, const double & dparam, const string & sparam)
{
  Scroll.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+

Söylesene, lütfen, kim bu birleşik öğeyi çizelgede çalıştırmayı biliyor?


 
Vasiliy Pushkaryov # :

SB'den gelen parşömeni anladın mı? Nedense, istemci paneli olmadan grafik üzerinde ayrı çalışmasını sağlayamadım. Belki yardım edebilirsin?


Birçok nüans var. Onay Kutusunda, onay kutusu (görsel olarak) çalışır çünkü OBJ_BITMAP_LABEL'dir ve Durumu terminal tarafından değiştirilir. Tıklaması, OnChartEvent'teki herhangi bir Bitmap etiketinin tıklanması gibi izlenebilir. Ancak standart kitaplığın, kullanıcı olaylarına dayalı kendi olay modeli vardır. CScrollV bileşeni CAppDialog'a eklenmişse, carrayObj CWndContainer::m_controls üzerinde yinelenerek void CAppDialog::ChartEvent içinde oluşturulurlar . Ardından ON_CLICK, ON_DRAG_START, ON_DRAG_PROCESS ve ON_DRAG_END gibi olaylar oluşturulur. Sizin durumunuzda, bileşenler CAppDialog'a eklenmedi, bu nedenle hiçbir olay tetiklenmedi. Bu mekanizmayı nasıl atlayacağımı ve kullanıcı olaylarını CAppDialog olmadan oluşturmaya zorlamayı düşünmedim. Kaynakları daha detaylı incelemek gerekir.

CWndContainer sınıfını temel alan bir bileşen oluşturmayı deneyebilirsiniz. Ve ona elementler ekleyin. Görsel öğeler yoktur (CDialog ve CAppDialog pencerelerinde olduğu gibi), ancak UI öğelerinin doğru çalışması için gerekli tüm mekanizmalar mevcuttur.
 
Mihail Matkovskij # :

Birçok nüans var. Onay Kutusunda, onay kutusu (görsel olarak) çalışır çünkü OBJ_BITMAP_LABEL'dir ve Durumu terminal tarafından değiştirilir. Tıklaması, OnChartEvent'teki herhangi bir Bitmap etiketinin tıklanması gibi izlenebilir. Ancak standart kitaplığın, kullanıcı olaylarına dayalı kendi olay modeli vardır. CScrollV bileşeni CAppDialog'a eklenmişse, carrayObj CWndContainer::m_controls üzerinde yinelenerek void CAppDialog::ChartEvent içinde oluşturulurlar . Ardından ON_CLICK, ON_DRAG_START, ON_DRAG_PROCESS ve ON_DRAG_END gibi olaylar oluşturulur. Sizin durumunuzda, bileşenler CAppDialog'a eklenmedi, bu nedenle hiçbir olay tetiklenmedi. Bu mekanizmayı nasıl atlayacağımı ve kullanıcı olaylarını CAppDialog olmadan oluşturmaya zorlamayı düşünmedim. Kaynakları daha detaylı incelemek gerekir.

CWndContainer sınıfını temel alan bir bileşen oluşturmayı deneyebilirsiniz. Ve ona elementler ekleyin. Görsel öğeler yoktur (CDialog ve CAppDialog pencerelerinde olduğu gibi), ancak UI öğelerinin doğru çalışması için gerekli tüm mekanizmalar mevcuttur.
CAppDialog'un mekanizmalarını açıkladığınız ve onu bir kapsayıcıya bağlama önerisi için teşekkür ederiz. Biraz daha zaman olacak, denemeye çalışacağım.