Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Evet, önce tam bir program yayınlamak önemlidir.
Herkese merhaba,
Son tartışmalar ışığında, Peter Konow'un projesinin sonuçlarını ve ilerlemesini forum yerine "Codebase "de belgelemeyi önermek istiyorum. Forum, tartışmalar ve anında geri bildirim için mükemmeldir, ancak projenin genel resmini ve tutarlı politikalarını sunmak için gereken yapı ve tutarlılıktan yoksundur.
Codebase'i kullanarak, ilgili tüm bilgilerin organize edilmesini, kolayca erişilebilir olmasını ve projenin durumuna ilişkin net bir genel bakış sunmasını sağlayabiliriz. Bu sadece netliğin korunmasına yardımcı olmakla kalmayacak, aynı zamanda tüm ekip üyeleri ve paydaşlar arasında daha iyi işbirliği ve anlayışı kolaylaştıracaktır.
Bu önerimi dikkate alırsanız çok memnun olurum.
Bir 'Kod Tabanı' kullanarak ilgili tüm bilgilerin organize edilmesini, kolayca erişilebilir olmasını ve projenin durumunun net bir resmini sunmasını sağlayabiliriz. Bu sadece netliğin korunmasına yardımcı olmakla kalmayacak, aynı zamanda tüm ekip üyeleri ve paydaşlar arasında daha iyi işbirliği ve anlayışı da teşvik edecektir.
Bu öneriyi dikkate alırsanız çok müteşekkir olurum.
Çok mantıklı bir öneri, teşekkür ederim. Kuşkusuz, kod tabanı güncellemeleri yayınlamak ve kullanıcılarla iletişim kurmak için uygundur. Projenin gelişimi için harika bir katkı. Geçmişte kod tabanını neredeyse hiç kullanmamış olmama rağmen, şimdi şartları ve koşulları keşfetmenin ve gereksinimlere uyum sağlamanın pratik anlamını görüyorum. Bu platformun olanakları ve sınırlamaları hakkında bir fikir edinmek için, topluluğun tanınmış üyelerinin projelerine bakacağım. Onları örnek alarak, projeyi kod tabanında bilgilendirici ve yetkin bir şekilde yürütebileceğim.
Bugün için planlanmış bir sürümüm var.
Ancak, bir forum üyesinin yararlı tavsiyesine uymaya ve yeni sürümü kod tabanında yayınlamaya karar verdim. Bunu doğru yapmak için, benzer yayınların örneklerini incelemek, projeyi forumda ve orada paralel olarak yürütmek için bir plan yapmak için birkaç güne ihtiyacım olacak. Ve ayrıca moderasyondan geçmek için.
Bu sürüm hakkında birkaç söz:
1. Bir kullanıcı programı ile grafik arayüzü arasında programatik etkileşim sistemi kavramsallaştırıldı ve uygulandı.
Daha fazla detay:
1. Boş parantezlerle çağrıldıklarında, fonksiyonlar eleman parametresinin değerini üç türden biriyle döndürür: int, double, string öğenin türüne bağlı olarak.
2. Parantez içinde bir değerle çağrıldığında, fonksiyonlar aktarılan değeri eleman parametresine ayarlar ve ardından yeniden çizer (değer, eleman türüne bağlı olarak int, double veya string olarak ayarlanır).
3. İlk parametrenin varsayılan değeri ve bir özellik numarası (mevcut özelliklerden) ile çağrıldığında, fonksiyonlar elemanın bu özelliğinin değerini döndürür (tüm özellik numaraları int türündedir, özellik parametresinde geçirilir).
4 .Parantez içinde değer ve özellik değeriile çağrıldığında,fonksiyonlar aktarılan değerleri elemanın mevcut özelliklerine ayarlar. Özelliknumarası özellik parametresinde, özellik değeri isedeğer parametresinde geçirilir.
Fonksiyon-sarmalayıcı isimlerinin yapısı: w6_i_BUTTON_Start();
1. w tüm sarmalayıcı fonksiyonların baş harfidir. Pencerenin kısaltmasıdır.
2. 6 (veya başka bir sayı) - öğeyi içeren pencerenin sıra numarası.
3. i (d ya da s) - elemanın parametresinin döndürülen/ayarlanan değerinin türü anlamına gelir.
4. BUTON - sarmalayıcı fonksiyonun ait olduğu eleman tipinin adı. Başka herhangi bir öğe olabilir.
5. BAŞLAT - belirli bir öğenin adı .
//----------------------------------------------------------------------------------------------------
Intellisense sisteminin akıllı uygulaması:
Pencerelerin ve öğelerin gerekli işlevlerini-kaplayıcılarını hızlı bir şekilde aramaya ve bulmaya yardımcı olan özel bir önek sistemi kullanılmasına karar verildi. İşte bir örnek:
Tüm pencere ve öğe sarmalayıcı işlevlerinin başında w harfi vardır. Ancak, w: _ harfinden sonra küçük bir çizgi koyarsanız, tüm UI pencere işlevlerinin adlarının bir listesini içeren bir intellisense pencer esi açılır. Daha sonra, listede aradığınız ada sahip pencereyi bulmanız, numarasına bakmanız (işlev adında basılıdır) ve tire işaretini silmeniz ve bu numarayı w'den sonra koymanız gerekir. Pencerede bulunan öğelerin işlevlerinin adlarını içeren intellisense listesi bir kerede görünecektir. İşte nasıl yapıldığı:
Bu, eleman sarmalayıcı fonksiyonlar listesinde hızlıca gezinmenin basit bir yoludur. Bunları yazdırmanıza bile gerek yok.
//----------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
Ayrıca API dosyasında değişiklikler ve eklemeler yapıldı. Artık eleman ve pencere hakkında daha fazla bilgi kullanıcıya sunuluyor:
Bu özellikleri yakında denemeyi umuyorum.
Motorun GUI ile programatik olarak etkileşime giren bir versiyonunu sunuyorum.
Çok şey yaptım. Anlatacak ve gösterecek bir şeyler var.
Herkese açık testlerden sonra kod tabanına yükleyeceğim.
İlginç bir şey ortaya çıktı...
Daha fazla ayrıntı yarın.
Zamanın biraz ilerisinde, kullanıcılar için çok uygun bir çözüm bulduğumu söyleyebilirim. Kodlarının içinde pencereler, öğeler ve özellikler arasında kolayca gezinebiliyorlar. Çözüm, öğelerin veya özelliklerin adlarını hatırlamalarına değil, kolayca bulmalarına ve bunlarla çalışmalarına olanak tanıyor. Aynı zamanda, her öğenin yalnızca kendisi ve "ilgili" öğeler için kullanılabilen bir get/set özellikleri listesi vardır. Önek, öğenin işlev adına gömüldüğünde, kullanıcı onu çağırır ve asla öğenin sahip olmadığı bir özelliği döndürmeye veya ayarlamaya çalışmak gibi bir hata yapmaz.
Sarmalayıcı fonksiyonların o kadar çok yönlü ve kullanımı kolay olduğu ortaya çıktı ki ben bile şaşırdım. Parantezler boş olduğunda bir parametrenin değerini döndürür, değer bir olduğunda ayarlar, ilk parametre boş olduğunda ve özellik indeksi ikincide olduğunda bir listeden bir özelliğin değerini döndürür. İlk parametrede bir değer ve ikincide bir özellik indeksi olduğunda bir özelliğe değer ayarlarlar. Ayrıca başarı durumunda 1, hata durumunda (geçersiz değer veya özellik) -1 şeklinde bir sonuç bildirimi döndürürler. Fonksiyonlar öğeleri kendileri yeniden çizer. Bununla ilgilenmenize gerek yoktur.
Sarmalayıcı fonksiyonlar ile yapabilecekleriniz:
1. Eleman parametresinin değerini alın.
2. Bir eleman parametresinin değerini ayarlayın.
3. Eleman türüne ait özelliklerin ayrı listesinden eleman özelliklerinin değerlerini alır (fonksiyon adında yazılı önek ile çağrılır).
4. Aynı listeden eleman özelliklerinin değerlerini ayarlayın.
5. Elemanın durumunu ayarlayın: nötr, etkin, (açık/kapalı), bloke nötr, bloke etkin.
6. Elemanın geçerli durumunu döndürür.
İlk durumda fonksiyon parametrenin değerini döndürür.
İkinci durumda sonucu döndürür: başarılı veya hata. Hata, günlüğe çıktı olarak verilir.
Üçüncü durumda, özelliğin değerini döndürür.
Dördüncü durumda sonuç: özelliği ayarlama başarısı veya hatası.
Beşinci durumda, 1 veya -1 döndürür.
Altıncıda - öğenin durum indeksini döndürür (ayrıntılar aşağıda).
Her şey otomatik olarak yazdırılan bir sarmalayıcı işlev tarafından yapılır. Bunu bulmak için w_ yazın, intellisense listesi açılacaktır, pencerelerin adlarını içerir. Bunlardan birinde aradığınız öğe vardır. Kabaca hangi pencerede olduğunu hatırlamanız gerekir. Sonra, şeytanı silin ve pencere numarasını yazın ve öğeler listesinden ihtiyacınız olanı seçin. Ezberleme yok.
Öğelerin özelliklerini de hatırlamanıza gerek yok. Özellik adına bakın, tek tek özelliklerin bir listesini açmak için öneki görün. Yazın, açın, özelliği seçin. Hiçbir şey hatırlamanıza gerek yok. Yazmak da yok. Intellisense her şeyi yapar.
Windows'un da kendi sarmalayıcıları vardır. Onları açabilir ve kapatabilirler. Geri kalan özellikler henüz uygulanmadı.
API dosyasında büyük bir yükseltme yapıldı. Artık eleman hakkında BÜYÜK miktarda daha yararlı bilgiye sahip. Yani: önekler, bireysel özellikler, eleman sarıcı fonksiyonun ve penceresinin prototipleri, elemanın tam konumu (varsa elemanın ait olduğu tablo, tuval ve sekme), parametresinin türü (int, double, string...), parametresinin özellikleri (min.değer, max.değer, adım, ondalık noktadan sonraki basamak sayısı) yazdırılır. İlk değer veya seçilen seçenek (öğeye bağlı olarak). Her şey oldukça okunabilir ve anlaşılabilir şekilde tasarlanmıştır.
Yeni işlevselliği kısmen test ettim ve bundan memnunum. Her şey amaçlandığı gibi çalışıyor.
Yarın bunu pratikte göstereceğim.