"MQL5 Tarif Defteri Gösterge Alt Pencere Kontrolleri - Düğmeler" makalesi için tartışma

 

Yeni makale MQL5 Tarif Defteri Gösterge Alt Pencere Kontrolleri - Düğmeler yayınlandı:

Bu makalede, düğme kontrolleri ile bir kullanıcı arayüzünü geliştirme örneğini ele alacağız. Kullanıcı ile etkileşim fikrini iletmek için, imleç üzerlerine geldiğinde düğmelerin renkleri değişecektir. İmleç bir düğmenin üzerindeyken, düğme rengi hafifçe koyulaşacak ve düğmeye tıklandığında büyük ölçüde koyulaşacaktır. Ayrıca, her düğmeye araç ipuçları ekleyerek sezgisel bir arayüz oluşturacağız.

CreateButton() fonksiyonunun son parametresine dikkat edin: bu, fare imleci bir grafik nesnesinin üzerinden geçtiğinde araç ipucundan sorumludur. Örneğin, bu parametre AddButtonsPanel() fonksiyonunda button_texts dizisinden (düğmeler üzerinde görüntülenen metin) aktarılan değerler ile temsil edilir. İsterseniz daha detaylı açıklamalara sahip ayrı bir dizi oluşturabilirsiniz.

Şimdi, göstergeyi grafiğe eklerseniz, sonuç aşağıdaki gibi olacaktır:

Şekil 1. Gösterge alt penceresine eklenen düğmeler

Şekil 1. Gösterge alt penceresine eklenen düğmeler

Şu anda, bunlar yalnızca gösterge alt penceresinde düzenlenmiş nesnelerdir. Kullanıcı ile etkileşim henüz uygulanmamıştır. Şimdi bu nesnelere "hayat verelim".

Yazar: Anatoli Kazharski

 

Yeni başlayanlar için iyi bir makale. Ancak, daha karmaşık arayüzlerde bu yaklaşım artık kabul edilemez. Gözünüze çarpan ilk şey:

for(int i=0; i<BUTTON_COLUMNS; i++)
     {
      for(int j=0; j<BUTTON_ROWS; j++)
        {
            ...
      ...
...
Yani, katı bir tablo yapısı algoritmanın içine dikilmiştir ve bu yapı neredeyse tüm fonksiyonlarda bulunur. Şimdi alt pencerenin tabloyla hiçbir şekilde ilişkili olmayan birkaç grafik öğe içerdiğini düşünelim. Onlar için kendi konumlandırma modellerini tanımlamamız gerekecektir ve bu iyi değildir. Konumlandırma modeli tek ve evrensel olmalıdır, yani bu durumda "tablo" düzeni bu modelin özel bir durumu olmalıdır.
 
C-4:

Yeni başlayanlar için iyi bir makale. Ancak, daha karmaşık arayüzlerde bu yaklaşım artık kabul edilemez. Gözünüze çarpan ilk şey:

Yani, katı bir tablo yapısı algoritmanın içine dikilmiştir ve bu yapı neredeyse tüm fonksiyonlarda bulunur. Şimdi alt pencerenin tabloyla hiçbir şekilde ilişkili olmayan birkaç grafik öğe içerdiğini düşünelim. Onlar için kendi konumlandırma modellerini tanımlamamız gerekecektir ve bu iyi değildir. Konumlandırma modeli tek ve evrensel olmalıdır, yani bu durumda "tablo" düzeni bu modelin özel bir durumu olmalıdır.

Evet, haklısınız. Bir dahaki sefere daha orijinal bir şey bulmaya çalışacağım. )

Bu durumda, özel durumdan uzaklaşmak için tek boyutlu bir dizi ve bir döngü kullanmak yeterlidir.

 

Neden OBJ_EDIT kullanmanız gerektiğini anlamıyorum.

Kütüphanedeki standart düğmeleri "canlandırmak" çok daha faydalı olurdu (böylece farenin altında da parlayacaklardı).

Yani faydalı bir makale gibi görünüyor ama neden böyle bir yol seçildiğini anlamıyorum.

not: Yazarın bereketini kıskanıyorum ;)

 
komposter:

...

Test cihazında görselleştirme sırasında görüntülendiği için OBJ_EDIT'i zaten kullanmaya alışkınım.

Bu durumda, örnek için herhangi bir nesne kullanabilirsiniz. Sonuçta bu yaratıcı bir süreç. )

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

Neden OBJ_EDIT kullanmanız gerektiğini anlamıyorum.

Kütüphanedeki standart düğmeleri "canlandırmak" çok daha yararlı olurdu (böylece farenin altında da parlarlar).

Yani yararlı bir makale gibi görünüyor, ancak neden böyle bir yol seçildiğini anlamıyorum.

ps: Yazarın üretkenliğini kıskanıyorum ;)

Gerçekte, standart düğmeler çok kaygan kontrol elemanıdır, çünkü ilk etapta çerçeve rengini desteklemez (nedeni çok garip olsa da) ve ikinci sırada, çerçeve türüne bağlı olarak BORDER_FLAT, BORDER_RAISED görsel olarak konumunun dışında açıkça konumlandırılır, buna ek olarak basma durumuna bağlı olarak gölgelerini değiştirdiğini ve ChartRedraw olmadan görüntüsünü değiştirmenin çok yavaş olduğunu söylemiyorum. Gerçekte, Windows 3.11'e benzeyen doğranmış arayüzü dışında düğme, diğer öğelere kıyasla herhangi bir avantaj sağlamaz. Evet, düğmeye basılıp basılmadığını gösteren özel bir OBJ_SELECTED alanı vardır, ancak gerçekte, basma bayrağını içeren kendi OBJ_EDIT nesnenizi oluşturmanın hiçbir sorunu yoktur.
 
Ve düğmeler aslında düğme değildir).
 
komposter:

Kütüphanedeki standart düğmeleri "canlandırmak" çok daha faydalı olacaktır (böylece farenin altında da parlayacaklardır).

Ve merak ediyorum, ürünlerinde standart grafik öğeleri kütüphanesini kullanacak tek bir profesyonel geliştirici var mı?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
zfs:
Ve düğmeler aslında düğme değildir).
Düğme, basabileceğiniz herhangi bir şeydir. ))
 
C-4:
Ve merak ediyorum, ürünlerinde standart grafik öğeleri kütüphanesini kullanacak herhangi bir profesyonel geliştirici var mı?
Sanırım piyasada standart kütüphanede kullanılan öğelere benzeyen arayüzlere sahip ürünler var.
 

Merak ediyorum, materyali hazırlarken bu makaleyi okudunuz mu?