"Özel Grafik Kontrolleri. Kısım 1: Basit Kontrol Oluşturma" makalesi için tartışma

 

Yeni makale Özel Grafik Kontrolleri. Kısım 1: Basit Kontrol Oluşturma yayınlandı:

Bu makalede grafik kontrollerinin geliştirilmesine ilişkin genel ilkeler ele alınacaktır. Grafik nesnelerle hızlı ve kullanışlı bir çalışma için araçlar hazırlayacağız, metin veya nümerik verilerin girilmesi için basit bir kontrol oluşturma örneğini ve bunu kullanma yollarını analiz edeceğiz.

MetaTrader 5 istemci terminalinde toplamda kırkın üzerinde grafik nesne vardır. Tüm bu nesneler ayrı olarak kullanılabilir, ancak daha sık birbirine bağlı nesneler zincirinde kullanılırlar. Örneğin, bir düzenleme alanı (OBJ_EDIT) kullanıldığında, düzenleme alanının fonksiyonunu belirtmek için bununla birlikte bir bitmap etiketi (OBJ_LABEL) kullanılır.

Düzenleme alanı kullanırken, genellikle bir kullanıcı tarafından veri girişinin doğruluğunu kontrol etmeniz ve ondalık ayırıcı olarak hem nokta hem de virgül kullanma imkanı sağlamanız gerekir.

Verilerin programlı çıkışını kullanırken, verileri biçimlendirmeniz gerekir. Örneğin, gereksiz sıfırları silmelisiniz. Bu nedenle, düzenleme alanını, bitmap etiketini ve diğer bazı fonksiyonel özellikleri içeren tek bir nesneye sahip olmak daha kolay olacaktır.

Mevcut olarak, programlama dünyasında hemen hemen her uygulamada kullanılan belirli bir grafiksel kontrol seti vardır: bir form (tüm kontrol öğelerinin bulunduğu bir uygulama arayüzünün tabanı), bir çerçeve (tek bir fonksiyonel amacı olan öğe setlerini gruplandırmayı ve ayırmayı sağlar), bir düğme, bir düzenleme alanı, bir etiket, bir onay kutusu, radyo düğmeleri, dikey ve yatay kaydırma çubukları, bir liste, bir açılır liste, bir menü satırı, bir menü sekmesi (şek. 3). 

 


Yazar: Dmitry Fedoseev

 
İkinci bölüm için ne planlandığını merak ediyorum.
 
sergeev:

İkinci bölüm için ne planlandığını merak ediyorum?
İkinci bölümde, standart kontrollerden oluşan bir kütüphane (10'dan fazla öğe: onay kutusu, açılan kutu, kaydırma çubukları, liste, radyo düğmeleri, vb), üçüncü bölümde - kontrollerle formların oluşturulması.
 

İdeoloji değişecek mi? ...Gerçekten değişmesine ihtiyacım var.

Belki de üçüncü bölümle başlamalıyız - kontrollerinizle formlar oluşturmak.

ve sonra bir sonraki bölüme geçmeliyiz - her bir öğenin iç işleyişine.

Yani, önce kullanıcıları kompleksin bir bütün olarak nasıl çalıştığı, alt öğenin üst öğeyle nasıl mesaj ve olay alışverişinde bulunduğu, ideolojinin genel olarak nasıl çalıştığı konusunda eğitin. Bu önemlidir, çünkü genelden özele - her bir özel unsurun inceliklerine - geçilmesi arzu edilir.

Ve bu arada - çizime, yani her bir öğenin nasıl çizildiğine vurgu yapmamalısınız (bunu kısaca yapabilirsiniz, ancak tüm öğeleri Göster işlevi ile çizdirirsiniz, böylece kullanıcılar çizim bloğunu görmek için her sınıfta nereye bakacaklarını bilirler). Çizim, tüm sürecin ideolojisiyle karşılaştırıldığında gerçekten hiçbir şeydir.

Tüm öğelerin bağlantılı olduğu bazı hazır form örneklerini göstermek daha iyi olacaktır.

Yani, hazır bir örnek üzerinde, ayrıntıları parçalara ayırmak.

 
sergeev:

İdeoloji değişecek mi? ...Gerçekten değişmesine ihtiyacım var.

Belki de üçüncü bölümle, kalıpların yaratılmasıyla başlamalıydık.

ve sonra yavaş yavaş her bir elementin iç işleyişine geçmeliyiz.

İdeoliji tam olarak nedir?

Bir şekil temelde hiçbir şeydir - x ve y koordinatları.

Bir formla başlayacak olsaydınız, oraya ne yazardınız - "bu bir formdur ve buraya bir kontrol elemanı ekleyeceksiniz ve burada olayını işleyeceksiniz...", ancak ne tür bir kontrol elemanı olduğunu, neyi temsil ettiğini kimse bilmiyor.

İkinci kısımda bir form yaparsanız, sadece bir kontrol elemanımız varken - bu gösterge değildir ve güzel değildir.

 
Integer:

İdeolijiyle ilgili tam olarak ne var?

Biçim aslında hiçbir şeydir - x ve y koordinatları.

Hemen yukarıdaki cevabı genişlettim.

Haklısınız. Mesele de bu zaten, biçim hiçbir şey değildir. Önemli olan olayların değişim süreci ve bir bütün olarak tüm unsurların etkileşimidir. Ve bu da ancak sistemin tek tek değil, bir bütün olarak çalıştığını gösterdiğinizde açıklanabilir.

 
Integer:

İkinci bölümde bir form yaparsanız, sadece bir kontrol elemanımız varken - bu gösterge değildir ve güzel değildir.
Form ve kontrol sınıfınız zaten hazır mı?
 
sergeev:

Hemen yukarıdaki cevabı genişlettim.

Haklısınız. Mesele de bu zaten, form hiçbir şey değildir. Asıl önemli olan olay alışverişi ve tüm elemanların bir bütün olarak etkileşim sürecidir.

Form üzerinde bir Tamam ve İptal düğmesi olacak, terminalin yeniden başlatılması durumunda veri kaydedilecektir. Olay işleme, formu sürükleme, simge durumuna küçültme yeteneği olacaktır.
 
sergeev:
Form ve kontrol sınıfınız hazır mı?

Oldukça hazır. İlk başta alt pencereler olmadan yaptım, şimdi her şeyi alt pencerelerde çalışacak şekilde yeniden tasarlıyorum.

 
sergeev:

İdeoloji değişecek mi? ...Gerçekten değişmesine ihtiyacım var.

Belki de üçüncü bölümle başlamalıydık - kontrollerinizle formlar oluşturmak.

ve sonra bir sonraki bölüme geçmeliyiz - her bir öğenin iç işleyişine.

Yani, önce kullanıcıları kompleksin bir bütün olarak nasıl çalıştığı, alt öğe ile üst öğe arasında mesajların ve olayların nasıl değiş tokuş edildiği, ideolojinin genel olarak nasıl çalıştığı konusunda eğitin. Bu önemlidir, çünkü genelden özele - her bir özel unsurun inceliklerine - geçilmesi arzu edilir.

Ve bu arada - render işlemine, yani her bir öğenin nasıl çizildiğine vurgu yapılmamalıdır. Formların nasıl çalıştığına ve tüm unsurların nasıl birbirine bağlandığına dair bazı örnekler göstermek daha iyidir. Çizim, tüm sürecin ideolojisiyle kıyaslandığında gerçekten hiçbir şeydir.


Sakın bana basit kodlar oluşturmak için yeterince örnek var demeyin, ancak başarılı bir sınıf hiyerarşisi ya da en azından evrensel, kolayca dönüştürülebilir bir ürünün kolay uygulanabilir bir şemasını oluşturamazsınız. MQ'nun standart sınıfları bile olasılıkları önceden ortaya koyarak program yazımını zorlaştırıyor.

 
Integer:
Form üzerinde bir Tamam ve İptal düğmesi olacak, terminalin yeniden başlatılması durumunda verileri kaydedecektir. Olay işleme, formu sürükleme, simge durumuna küçültme yeteneği olacaktır.

TAMAM. Bu çok iyi.

İkinci bölümde üst düzey fonksiyonları anlatırsanız makale bileşenleri daha hızlı kullanılacaktır.
Ben yine de form + düğmeler (+ giriş kutusu) ile başlardım ve daha sonra sadece üçüncü bölümde belirli kontrol bileşenlerini anlatırdım - listeler, menüler, vb.

Sonuçta, görev bu tür kontrollerin nasıl yazılacağını öğretmektir. Ancak bunların ekleneceği bir form olmadığı sürece, makale bu kadar muhteşem ve gerekli bir etki yaratmayacaktır.
Ayrıca, Form + Düğme (3 çeşit demek istiyorum - radyo, basma, kontrol) + EditBox'ı zaten ikinci makalede verdiğiniz anda, kullanıcı sınıfları bir bütün olarak görecek ve kendi kontrollerini bağımsız olarak oluşturabilecektir.