![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Basit bir kod örneği:
Bir kez başlanan her şey bitirilmelidir. Kimsenin ihtiyacı olmasa bile. Prensip budur.
Yaparsınız. Eğer arayüz sadece çizilemiyorsa, aynı zamanda kullanılabiliyorsa. Umarım öyle olur.
İhtiyaç. Eğer arayüz sadece çizilemiyorsa, aynı zamanda kullanılabiliyorsa. Umarım.
Kesinlikle. Ben de bunun üzerinde çalışıyorum.
Bu dalı birkaç dilde çoğaltmak, elbette Rusça bilmeyenler için zor bir sınavdır. İleriye baktığımızda, size birkaç soru sorabilir miyim? GUI'niz sınıflar kullanılmadan oluşturulduğu için, aynı anda birkaç belirsizlik ortaya çıkıyor. Sonuçta, her şeyden önce, bir ürün olarak GUI için gereksinimler ne olmalıdır? Bu, bir GUI oluşturmanın kolaylığı ve sezgiselliğinin yanı sıra çalışma sürecinde rahat kullanımıdır. Bu bağlamda:
Soru 1
Bir programcının GUI'nizin bir bölümünde olay işlemeyi ele alması için nasıl bir mekanizma var? Örneğin, GUI'lerimde, birkontrol oluştururken, o kontrolde bir değişiklik olayı meydana geldiğinde bir işleyici işlevine bir işaretçi ekliyorum. Örnek kod:
Soru 2
Bir programcı belirli bir GUI öğesinin durumuna nasıl erişebilir? Örneğin, GUI'mde onay kutusunun (bool) durumunu şu şekilde alabilirim: .
ama ben iç içe sınıflar kullanıyorum. Siz nasıl yapıyorsunuz?
Soru 2
Bir programcı belirli bir GUI öğesinin durumuna nasıl erişebilir? Örneğin, GUI'mde onay kutusunun (bool) durumunu şu şekilde alabilirim: ancak iç içe sınıflar kullanıyorum. Bunu nasıl yaparsınız?
Nicholas merhaba!
Sırayla cevap vereceğim:
1. Kullanıcı (kelimenin tam anlamıyla) kodumla etkileşime GİRMEZ. Bu gerekli değildir. Nedenini daha sonra anlayacaksınız. Kullanıcının SADECE biçimlendirme diline ihtiyacı var. (Bunu daha önce birkaç kez vurgulamıştım, ancak programcılardan her zaman bu soruyu alıyorum. ) Bunun nedeni, kullanıcının diziyi yalnızca yapıcı koddaki tanımlamalarla tanımlanan dil anahtar sözcüklerini kullanarak "başlatmasıdır". Yorumlayıcı (gösterge), işaretleme kodunu (yukarıda gösterdiğim) içeren bir diziyi kurucuya (aynı grafikteki EA olan) gönderir ve kurucu diziyi okur ve GUI'yi oluşturur. İşaretleme dili kodu, kurucu için bir talimattır. Buna göre yapıyı (çizim, eleman parametrelerinin başlatılması, ayarlar, vb.) gerçekleştirir.
2. Mekanizma basittir. Arayüzü düzenlemeyi bitirdikten sonra, kullanıcı grafiğe çift tıklayarak kurucunun içerik menüsünü çağırır ve kaydetme seçeneğini seçer. Kurucu tüm bilgileri iki dosyaya yazdırır. Bu dosyalar motor tarafından kullanılır.
Ayrıntılı olarak açıklayayım: kullanıcı, kurucudan ve motordan (sağlayacağım) alınan iki dosyayı EA'sına bağlar (EA'nın başlığında. Bir bağlantı örneği vereceğim). Ardından, OnInit(), OnTimer(), OnChartEvent() ve OnDeinit() fonksiyonlarına birkaç çağrı yazar (bir örnek vereceğim). Daha sonra, Internal_API adlı kurucu tarafından yazdırılan bir dosyaya gider. Bu dosya, GUI kontrollerini Uzman Danışman / kullanıcı göstergesine bağlamak için gerekli her şeyi içerir. Yani - öğelerin oluşturulan işlevleri ve ayrıntılı talimatlar. Bağlantı örneklerini daha sonra vereceğim.
Yine, karmaşık bir şey yok. Her şey orada. İşte örneğin yukarıdaki arayüzle nasıl göründüğü:
1. Bir pencere yazdı.
2. Aşağıdaki talimatları takip edin:
3.
4. InternalAPI dosyasını açın ve bağlantıyı başlatın. Dosya her şeyi içerir.
Kullanıcı yalnızca eylemlerini OnGuiEvent() işlevinin koşullarına yazmak zorundadır. Geri kalanına dokunulmasına gerek yoktur.
Kontrollerin durumunun değiştirilmesi ve değerlerinin alınması/ayarlanması, yapıcı tarafından oluşturulan ve kullanıcının intellisense'de göreceği fonksiyonlar yardımıyla yapılır.
Yukarıdaki dosya kodundan, kullanıcı sadece bu kısımla çalışmaktadır:
Nicholas, merhaba!
Sırayla cevap vereceğim:
1. Kullanıcı (kelimenin tam anlamıyla) kodumla etkileşime GİRMEYECEK. Bu gerekli değildir. Şimdi nedenini anlayacaksınız. Kullanıcının SADECE biçimlendirme diline ihtiyacı var. (Bunu daha önce birkaç kez vurgulamıştım, ancak programcılardan her zaman bu soruyu alıyorum. ) Bunun nedeni, kullanıcının diziyi yalnızca yapıcı koddaki tanımlamalarla tanımlanan dil anahtar sözcüklerini kullanarak "başlatmasıdır". Yorumlayıcı (gösterge), işaretleme kodunu (yukarıda gösterdiğim) içeren bir diziyi kurucuya (aynı grafikteki EA olan) gönderir ve kurucu diziyi okur ve GUI'yi oluşturur. İşaretleme dili kodu, kurucu için bir talimattır. Buna göre yapıyı (çizim, eleman parametrelerinin başlatılması, ayarlar, vb.) gerçekleştirir.
2. Mekanizma basittir. Arayüz düzenlemesini bitirdikten sonra, kullanıcı grafiğe çift tıklayarak kurucunun içerik menüsünü çağırır ve kaydet seçeneğini seçer. Kurucu tüm bilgileri iki dosyaya yazdırır. Bu dosyalar motor tarafından kullanılır.
Ayrıntılı olarak açıklayayım: kullanıcı, kurucudan ve motordan (sağlayacağım) alınan iki dosyayı EA'sına bağlar (EA'nın başlığında. Bir bağlantı örneği vereceğim). Ardından, OnInit(), OnTimer(), OnChartEvent() ve OnDeinit() fonksiyonlarına birkaç çağrı yazar (bir örnek vereceğim). Daha sonra, Internal_API adlı kurucu tarafından yazdırılan bir dosyaya gider. Bu dosya, GUI kontrollerini Uzman Danışman / kullanıcı göstergesine bağlamak için gerekli her şeyi içerir. Yani - öğelerin oluşturulan işlevleri ve ayrıntılı talimatlar. Bağlantı örneklerini daha sonra vereceğim.
Yine, karmaşık bir şey yok. Her şey orada. İşte örneğin yukarıdaki arayüzle nasıl göründüğü:
1. Bir pencere yazdık.
2. Aşağıdaki talimatları takip edin:
3.
4. InternalAPI dosyasını açın ve bağlantıyı başlatın. Dosya her şeyi içerir.
Kullanıcının yalnızca OnGuiEvent() işlevinin koşullarında eylemlerini belirtmesi gerekir. Geri kalanına dokunulmasına gerek yoktur.
Kontrollerin durumunun değiştirilmesi ve değerlerinin alınması/ayarlanması, yapıcı tarafından oluşturulan ve kullanıcının intellisense'te göreceği fonksiyonlar yardımıyla yapılır.
Peter, seni anlamıyorum.
Sorulara cevap vermedin. Programcıların çalışırken GUI ile nasıl etkileşime gireceklerini bilmeleri önemlidir. İşte GUI'mden bir örnek. Açık/koyu tema kısayoluna tıkladım ve bu olay hemen arka plan renklerini ve çizgilerini değiştirme işlevini tetikledi. Bu etkileşimi nasıl yapıyorsunuz?
" Kullanıcı benim kodumla (hiç) etkileş ime girmeyecek . " ne anlama geliyor? Programcının kodla değil, bu kodu oluşturması gereken olaylarla etkileşime girmesi gerekir. Sonuçta GUI ayrı ve bağımsız bir program değildir. GUI nihayetinde geliştiricinin ana programıyla etkileşime girmelidir. İster bir gösterge ister EA olsun.