"MQL5 Tarif Defteri Gösterge Alt Pencere Kontrolleri - Düğmeler" makalesi için tartışma - sayfa 4
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ve "düğme işlevlerinin OnInit işlevine yerleştirildiği" gerçeği çok komik!
Ancak, belki de neden bahsettiğimizi anlamıyorsunuz? Bir düğmeye basarsanız, bazı mikro görevleri yerine getirmek için bazı kullanıcı işlevleri tetiklenmelidir.
Pekala, biraz gülelim. Yazı sizin tarafınızdan yazıldı, "kimse dilinizi çekmedi".
Dolayısıyla, açıklanamayanlar için alıntı şeklinde açıklama en azından okuyucularınıza saygılı değil. Sorular örneklerle ve birincil kaynaklara bağlantılarla cevaplanmalıdır.
Gereksiz fonksiyonlarla kafa karıştırıcı ve aşırı yüklü kod sadece "yeni başlayanları" yanlış yönlendirir.
Ve "düğme işlevlerinin OnInit işlevine yerleştirildiği" gerçeği çok komik!
Kimse sizi dilinizden çekmedi. Bana kanıt verecek misin? Ya da daha doğrusu, ifademe bir yalanlama? Bilginiz olsun, henüz her şey El Kitabında açıklanmadı. Demek istediğim, el kitabı üzerindeki çalışmalar devam ediyor, eklemeler ve düzeltmeler yapılıyor. Her zaman her şeyi kendiniz kontrol etmelisiniz.
İnanın bana, makalenizdeki kod yeni başlayanlar için çok daha "kafa karıştırıcı" ve sadece bu değil, makalenizin tartışmasında da görülebilir.
Ancak, belki de neden bahsettiğimizi anlamıyorsunuz? Bir düğmeye tıklarsanız, bazı mikro görevleri yerine getirmek için bazı kullanıcı işlevleri tetiklenmelidir.
Evet, kelimesi kelimesine anladım. Sorularınızı daha açık bir şekilde sorun. Ancak bugün böyle bir işleviniz varmış gibi göründüğü için cevabımın sizin tarafınızdan alaya alınacağını tahmin ediyorum.
Bu durumda "mikro görev" düğmenin rengini değiştirmekti. Gereksiz bir şey olmaması için bilerek herhangi bir ekstra özellik eklemedim. Sadece kodu aşırı yüklemekten kaçınmak için.
Aslında makalenin konusu sadece butonlarla sınırlı değil. Çoğunluğu grafik olayları ile ilgili. Böyle birkaç örnek var, bu yüzden bir tane yazmaya karar verdim.
Sayın makale yazarı, bunu benim için değil, yeni başlayanlar için yazmışsınız. Aslında, çözümlerinizle ilgilenmiyorum, ancak dili yeni tanımaya başlayanlardan bahsediyoruz. Hangi "diğer programlardan" bahsediyoruz? Ve bir programın OnDeinit fonksiyonu diğer programların fonksiyonlarını nasıl etkileyebilir?
Bir makaleyi tartışıyoruz ve siz neden bu kadar öfkelisiniz?
Soruları benim için değil, yeni başlayanlar için yanıtlamaya çalışın - böylece neden ve nasıl olduğunu anlasınlar.
Sayın makale yazarı, bunu benim için değil, yeni başlayanlar için yazdınız.
Kesinlikle öyle.
Aslında, sizin çözümlerinizle ilgilenmiyorum, ancak dili yeni tanımaya başlayanlardan bahsediyoruz.
Ama sorular soruyorsunuz.
Hangi "diğer programlardan" bahsediyoruz?
Daha önce bağlantılarını verdiğiniz programlardan. Ve bir kanıt sunmadan ipuçlarıyla ifadelerimi çürütmeye çalışıyorsunuz.
Peki bir programın OnDeinit fonksiyonu diğer programların fonksiyonlarını nasıl etkileyebilir?
Etkiliyor. Bunun hakkında yazmıştım. Makaleyi yayınlayan editör bunu doğruladı. Siz de kontrol edebilir ve kendiniz görebilirsiniz.
Makaleyi tartışıyoruz ve siz neye bu kadar kızıyorsunuz?
Hiçbir şeye. İddiamı çürütecek bir cevap bekliyorum. )
Soruları benim için değil, yeni gelenler için yanıtlamaya çalışın - böylece neden ve nasıl olduğunu anlasınlar.
Şu ana kadar yeni gelenlerden hiç soru gelmedi. Ve soru da olamaz. Her şey çok açık ve her kod satırı ayrıntılı olarak yorumlanmış.
Önce bunu sıkıştırıyoruz:
yani şimdi fare olaylarını takip etmiyoruz, değil mi?
Kodunuzu grafik üzerinde çalıştırın:
şimdi "başka bir program" çalıştırıyoruz, bu yine sizin kodunuz olsun:
Sanırım bir şeyler ters gitti? Yoksa yapmamız gereken bu mu?
şimdi göstergelerden birini siliyoruz ve kodun yazarına göre "fare takibini" kaybettik, ancak bu gerçekleşmiyor:
Eğer siz uygun değilseniz, kim uygun bilmiyorum? Danald Knuth? Bill Gates mi?
Sadece bir iltifat almaya çalışıyordum. İşe yaradı.)
Anlıyorum. Ancak açık olmayan şey, sizin tarafınızdan yaratılan Pazarın önde gelen ürünlerinin size ait olmadığıdır. Bu utanç verici değil mi?
1. Henüz akşam olmadı)
2. Panoyla kıyaslanamayacak kadar olmasa da el becerilerim de sürekli zirvede.
3. Panonun başarısı büyük ölçüde fikir sahibinin çabalarından kaynaklanıyor, bu nedenle benim ürünüm olduğunu söylemek yanlış olur.
4. Ücretsiz çalışmadım)
...
şimdi göstergelerden birini siliyoruz ve kodun yazarına göre "fare takibini" kaybettik, ancak bu gerçekleşmiyor:
Şimdi göstergelerde OnDeinit() olayının tetiklenip tetiklenmediğini kontrol edin. Bu daha önce bahsettiğim ilginç nokta. :) Yani OnDeinit() içinde, makaledeki örnekte, hareket izleme olayı devre dışı bırakılır. Bazı derlemelerden beri OnDeinit() indikatörlerde çalışmayı durdurmuş gibi görünüyor. Bu bir hatadır ve geliştiricileri bilgilendirmeliyiz.
Ayrıca, ifademin doğru olduğundan emin olmak için, bu kod satırını (vurgulanmış) eklemenin yeterli olduğu boş bir Uzman Danışman ( OnDeinit() işlevi Uzman Danışmanlarda çalışır) yapmamız gerekir:
//---
Ve şimdi, makaledeki gösterge grafik üzerindeyken Uzman Danışmanı kaldırırsanız, hareket olayının izlenmesi göstergede de devre dışı bırakılacaktır.
Bunun hakkında:
bir şeyler ters gitmiş olmalı mı yoksa bu şekilde mi tasarlandı?
Bu biliniyor. Bu şekilde tasarlanmadı, sadece bu makalede dikkate alınmadı. Makale, her zaman olduğu gibi, basit bir örnektir, tüm durumlar için hazır bir çözüm değildir. )
Genel olarak, bu kod çok sorunlu görünüyor. Uzman Danışmanı/göstergeyi devre dışı bırakırken fare hareketi izlemeyi kapatmak için gerçek bir neden yoktur. Bu kadar çok uğraşmak istiyorsanız, Uzman Danışman başlatılmadan önce var olan durumu geri yüklemelisiniz:
Genel olarak, bu kod oldukça sorunlu görünüyor. Uzman Danışmanı / göstergeyi devre dışı bırakırken fare hareketi izlemeyi kapatmak için gerçek bir neden yoktur.
Hayır, yanılıyorsunuz. Fare izlemeyi devre dışı bırakmak için gerçek nedenler var. Ve şimdi bunu kanıtlayacağım. )
Örneğin, bir grafik üzerinde çalışan iki programınız var. Fare hareketi olayını izlemeniz gereken Uzman Danışman. Ve fare hareketi olayını izlemeniz gerekmeyen, ancak diğer bazı grafik olaylarını izlemeniz gereken bir gösterge.
Şimdi Uzman Danışmanın bu kodunu çalıştırın:
İçinde, başlatma sırasında, OnInit() işlevinde, fare hareketi olayının izlenmesi etkinleştirilir. Ancak, bu izlemenin devre dışı bırakılması gereken OnDeinit() işlevindeki satır kasıtlı olarak yorumlanmıştır.
Göstergeyi grafik üzerine de yükleyin. İşte kodu:
Hem birinci hem de ikinci program, günlüğe olayın alındığına dair bir mesaj yazdırır. Şimdi Uzman Danışmanı grafikten kaldırın. Onun yardımıyla bazı hesaplamalar yaptığınızı ve artık ona ihtiyacınız olmadığını varsayalım. Kaldırıldıktan sonra, fare hareketi izleme olayı devre dışı bırakılmadığından, gösterge bu olayı almaya devam eder. Ve sizin buna ihtiyacınız yok.
Şimdi aynı fikirde misiniz? )