MQL ile yazılmış kullanıcı arayüzleri galerisi - sayfa 65

 
Реter Konow #:
Farklı elemanlar içinON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCKdurumlarınıayarlayın

Bir düğmenin açık/kapalı durumu nasıl elde edilir?

 
hini #:

Düğmenin açık/kapalı durumu nasıl elde edilir?

Sıradaki konu bu. Bugün bunu ele alacağız.

Bu GUI'nin öğelerinin çizildiğini eklemeliyim, bu nedenle standart durum alma yöntemi ObjectGetInteger(0, "button1", OBJPROP_STATE); çalışmayacaktır.

Ayrıca, düğmeler de dahil olmak üzere öğelerin olaylarının API dosyasına gönderildiğini hatırlatmama izin verin.

 

Dikkate alınması gereken konuların genel bir listesi:

1. Intellisense listesinde yönlendirme ve doğru pencerenin işlevini seçme.

2. Pencereleri programlı olarak açma ve kapatma.

3. Intellisense listesinde yönlendirme ve doğru pencerede doğru öğeyi seçme.

4. Bireysel eleman özelliklerinin listelerinde gezinme.

5. Bir öğenin ve pencere sarmalayıcı işlevinin adını ayrıştırma.

6. Seçilen bir elemanın parametre değerini kendi türündeki bir değişkene döndürme. Birkaç farklı elemanın üç tipini düşünün.

7. Farklı tipteki elemanların parametrelerinde değerlerin ayarlanması. Değerlerin bu elemanların arayüz pencerelerinde nasıl görüneceğini görelim.

8. Bir elemanın parametre değerlerini döndürmek, bu değeri değiştirmek ve başka bir elemana iletmek. Farklı tipte elemanlar ve değerler düşünün ve farklı tipteki elemanlar arasındaki iletimi farklı pencerelerde test edin.

9. Önceki değeri döndürme (_V_LAST). Son değerin ne zaman ve hangi durumlar için gerekli olduğu (mevcut değerle karıştırılmamalıdır).

10. Farklı eleman türleri için ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK durumlarının ayarını test edin.

11. Farklı türlerdeki öğelerin değer değişikliklerini birbirine bağlamayı ve senkronize etmeyi deneyelim: örneğin, düğmeler ve kaydırıcı ile giriş alanı. Bir elemanın (manuel veya yazılım) değeri değiştiğinde, ikinci elemandaki değerin de buna uygun olarak değiştiğini varsayalım.

12. Kaydırıcının ve düğmeli giriş alanının aralık sınırlarını sarmalayıcı işlevler aracılığıyla programlı olarak sıfırlamayı deneyelim. Bunu test edecek zamanım olmadı ama içimden bir ses çalışacağını söylüyor. Yine de bir bakalım.

13. Sarmalayıcı fonksiyonlar aracılığıyla eleman durumlarını döndürmeyi deneyelim. İşlevselliğe dahil edildi, ancak test etmek için zamanım olmadı. Göreceğiz bakalım... Sonuç bilinmiyor.

14. Metin ve eleman tabanları için renkleri alalım ve ayarlayalım. Bu renkleri bazı basit olaylar veya değer sınırları ile ilişkilendirmeyi deneyebiliriz.

15. Yeni API dosyası çıktısında nasıl gezineceğiniz ve okuyacağınız hakkında daha fazla bilgi vereceğim.

//------------------------------------------

Daha önce ele aldığımız konular sarı renkle vurgulanmıştır.


Bugün gözden geçireceğiz:

11. Farklı tipteki elemanların değişen değerlerinin senkronizasyonu (bağlanması): örneğin düğmeli ve kaydırıcılı giriş alanı. Böylece bir öğenin değeri değiştirildiğinde (manuel veya yazılım), ikinci öğedeki değer de buna göre değişecektir.

12. Kaydırıcının ve düğmeli giriş alanının aralık sınırlarını sarmalayıcı işlevler aracılığıyla programlı olarak sıfırlamayı deneyelim. Bunu test edecek zamanım olmadı ama içimden bir ses çalışacağını söylüyor. Yine de bir bakalım.

13. Sarmalayıcı fonksiyonlar aracılığıyla eleman durumlarını döndürmeyi deneyelim. İşlevselliğe dahil edildi, ancak test etmek için zamanım olmadı. Göreceğiz bakalım... Sonuç bilinmiyor.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 
Tema büyük, çok sayıda gif ve resim var. Zaman alıcı...
 

11. Farklı tipteki elemanların parametrelerinin bağlanması.

Dikkatli bir kişi, çok pencereli bir GUI'de, farklı öğelerin genellikle parametre değerleri, özellikleri ve durumları ile bağlantılı olduğunu fark etmiştir. Örneğin:

//-------------------------------------------------------------------------------------------------------------------------

  • Girilen metin aniden diğer pencerelerin öğelerinde görünür.
  • +/- düğmeleriyle ayarlanabilen bir ayar, bir alandaki kaydırıcının veya sayının konumunu değiştirir.
  • Metin alanı bir karakter dizesini başka bir pencerenin tablo hücresine çevirir.
  • Bir açılır liste seçeneği öğelerin rengini veya yazı tipini değiştirir.
  • Tıklanan bir onay kutusu bir grup radyo düğmesini kilitler.
  • Vb.

//-------------------------------------------------------------------------------------------------------------------------

Bir yerlerde görünmez bir element bağlantısı olduğunu düşünürsünüz. Ve gerçekten de var. Ancak bu sadece dışarıdan bakan bir gözlemci için görünmezdir. Bir geliştirici için oldukça açıktır ve bugün bunu ayrıntılı olarak ele alacağız.

1. Elemanların bağlantısının iki yönü vardır:

  • Mantıksal - her programda değerleri doğrudan veya dolaylı olarak birbirine bağlı olan ve birbirini geçersiz kılan parametreler vardır.Grafik arayüzlü programlarda bağlantı görsel olarakizlenir .
  • Teknik - tüm parametreler dahili program algoritmaları ile bağlantılıdır.

Bağlantıların teknik olarak gerçekleştirilmesi, bir grafik motorunun varlığı nedeniyle basitleştirilmiştir.

Açıklamama izin verin:

Geleneksel bir Uzman Danışman'da, her parametrekullanıcı tarafından icat edilir, adlandırılır, saklanır ve işlenir . Bu, atlanamayacak rutin bir çalışmadır. Bununla birlikte, bir grafik motor kullanılması durumunda, kurucuda oluşturulan öğeler, depolama konumu ve işleme / geri dönüş işlevi ile birlikte parametreyi otomatik olarak alır. Buna ek olarak, kullanıcı tip, aralık, geçmiş değer vb. gibi özelliklerini de alır. Bu, işçiliği büyük ölçüde basitleştirir. Teorik olarak, GUI öğelerinin hazır parametrelerini diğer kullanıcı parametreleri olarak kullanmak ve bunları doğrudan ticaret mantığına bağlamak mümkündür. Örneğin, lot, takip eden stop, kar alma ve diğerleri, kendi değişkenlerinden değil, değerlerinden sorumlu ayar alanlarından.

Bazı genel sonuçlar:

1. Bir programda grafiksel bir kontrolün varlığı = hazır bir program parametresinin varlığı + özellikleri + değeri döndürme/ayarlama işlevi.

2. Arayüz programının pencerelerine ne kadar çok kontrol yerleĢtirilirse, alım satım mantığına ve alım satım bilgilerinin giriĢ/çıkıĢına o kadar çok parametre dahil olur.

3. Daha fazla ayar ve pencere - daha yüksek kontrol vepiyasa veri çıktısının daha geniş bant genişliği (otomasyona halel getirmeksizin).

4. Piyasa verisi çıktısının kontrolü ne kadar yüksek ve bant genişliği ne kadar geniş olursa, yatırımcının farkındalığı da o kadar iyi olur.

5. Farkındalığın otomasyon ve kontrol ile çarpımı = tüccar fırsatlarının ölçeklendirilmesi.

Otomasyonun genellikle manuel kontrole karşı olduğunu da eklemeliyim. Grafik arayüze sahip olmanın manuel ticaret anlamına geldiğini söylerler. Ancak durum öyle değildir. Yazılım arayüzü otomasyonu dışlamaz ancak genişletir, ona bir "gradyan" ekler - üç seçenek açar: manuel kontrol, yarı otomatik ticaret ve otonom mod.

Bir tüccarın yapması gereken tek şey bir seçenek seçmektir.

Tanrım, bu amaç için bir pencere oluşturmak kolaydır.

//---------------------------------------------------------------------------------------------------


2. Kontrollerin bağlayıcı parametrelerinin teknik uygulamasına geçelim.

Bazı pratik örnekleri ele alalım:

1. Tanıdık bir ayarlar penceresi açalım:

   //------------------------------------------------
   //Open the window "Settings example 1".

   w_6_Settings_example_1();
   //------------------------------------------------



2. API dosyasını açın ve On_Gui_Event() fonksiyonu içinde açılan pencerenin öğelerini bulun:




Hatırlatma: Tüm kontrol olayları On_Gui_Event() fonksiyonuna gelir;

Bu bağlamda, parametre bağlantılarının bir kısmını bu fonksiyonun içine, bir kısmını da gövdesinin dışına yazacağız.


1. "Değeri döndür" butonlu alan (S_EDIT) ile "Değeri yuvarla" sürgüsü (H_SLIDER) arasında bir bağlantı kuralım:

  • API dosyasında "Değeri döndür" düğmeli alanı bulun.
  • Değeri "Değeri döndür" kaydırıcısına döndürün.

*(önemli not: intellisense'in çalışması için öğelerin ve pencerelerin işlevleri UIDATA dosyasından API dosyasının altına taşınmalıdır. bir sonraki sürümde oraya yazdırılacaklar).
case Settings_example_1___Spin_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the value is set?
               //------------------------------------------------------------------------------------------------------
               //Min value:  NOT SET  |   Max value:  NOT SET  |   V_step:  1.7  |   Default value:  468.99  |  Digits: 3
               //------------------------------------------------------------------------------------------------------
               w6_i_p3_H_SLIDER_Roll_the_value((int)value);
               
                 
               Alert("S_EDIT Spin_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Slider.
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: alandaki değeri düğmelerle değiştiriyoruz ve kaydırıcı kendi kendine hareket ediyor.

(*Önemli - kaydırıcı sadece kendi aralığı içinde hareket edebilir (bu durumda, 0'dan 100'e). Aralığın aşılması durumunda değer değişmez, ancak günlükte bir hata görüntülenir).


//----------------------------------------------------------------------------------------------------------------

3. Rol değişimi yapalım. Kaydırıcı, giriş alanındaki değeri kontrol edecektir:

  • API dosyasında "Değeri döndür" kaydırıcısını bulun.
  • "Değeri döndür" düğmeleriyle alana gönderilen değeri yazın.
case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------
               w6_d_p5_S_EDIT_Spin_the_value((double)value);
               
               //Alert("H_SLIDER Roll_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Spin edit.
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: Kaydırıcı tutamacını hareket ettirirken, düğmeli alan eşzamanlı olarak değeri değiştirir.


//----------------------------------------------------------------------------------------------------------------


4. Slider ve butonlu alanın birbirleri tarafından karşılıklı kontrolünü yazalım:

  • API dosyasında her iki elemanı bulun.
  • Değer gönderimini yazın. Butonlu alan değerini kaydırıcıya gönderir, kaydırıcı da değerini butonlu alana gönderir.

case Settings_example_1___Spin_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the value is set?
               //------------------------------------------------------------------------------------------------------
               //Min value:  NOT SET  |   Max value:  NOT SET  |   V_step:  1.7  |   Default value:  468.99  |  Digits: 3
               //------------------------------------------------------------------------------------------------------
               w6_i_p3_H_SLIDER_Roll_the_value((int)value);
               
                 
               Alert("S_EDIT Spin_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Slider.
               //------------------------------------------------------------------------------------------------------
               break;





case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------
               w6_d_p5_S_EDIT_Spin_the_value((double)value);
               
               Alert("H_SLIDER Roll_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Spin edit.
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: Slider ve input alanları aynı anda birbirini kontrol eder.

//---------------------------------------------------------------------------------------------------


Yarın bu temanın ikinci bölümünü diğer unsurlarla birlikte yayınlayacağım.

 

Bu şey harika! Zaman buldukça bu konuyu daha detaylı incelemeyi planlıyorum. Çalışmamın mt4 GUI'nin sınırlarını zorladığını sanıyordum ama sizin çalışmanız bir sonraki seviye.


 
Dennis Jorgenson #:

Bu harika bir materyal! Zamanım olduğunda bu konuyu daha ayrıntılı olarak incelemeyi planlıyorum. Çalışmamın mt4 GUI'nin sınırlarını zorladığını düşünüyordum, ancak çalışmanız bir sonraki seviye.


Nazik sözleriniz için çok teşekkür ederim!

 

11. Farklı tipteki elemanların bağlama parametreleri.

Konunun devamı.

Bölüm 2.

//--------------------------------------------------------------------------------------------------------------------------------

Gösterilen bağlama yöntemini diğer öğelere uygulayıp uygulayamayacağımızı görelim. Örneğin, onay kutularına.

1. En üstteki onay kutusunu kilitleyelim ve altındaki onay kutusunun kilidini açalım:


Bunu yapmak için:

1. API dosyasında"Set an option" onay kutusunu bulalım.

2."Başka bir seçenek belirle" onay kutusu için kilitlenmesi/kilidinin açılması gereken bir fonksiyon çağrısı yazın.

//===========================================================================================================================
//WINDOW          :---: Settings example 1 | #: 6 | PFX: w_6
//                |   |
//GET/SET         :---: int w_6_Settings_example_1(int value = get_i, int Property = 0)
//----------------|   |------------------------------------------------------------------------------------------------------
//ELEMENT         :---: TYPE: CHECKBOX | NAME: Set an option | PAR_TYPE: int | INIT STATE: OFF | PFX: w6
//                |   |------------------------------------------------------------------------------------------------------
//LOCATION        :---: Window's Main Frame 
//----------------|   |------------------------------------------------------------------------------------------------------
//G/S PROPERTIES  :---: PFX: p7_ | PROPS: NONE
//                |   |------------------------------------------------------------------------------------------------------
//G/S ACTIONS     :---: p7_ON | p7_OFF | p7_LOCK_ON | p7_LOCK_OFF | p7_GET_STATE |
//----------------|   |------------------------------------------------------------------------------------------------------
//                |   |
//GET/SET CALL    :---: int w6_i_p7_CHECKBOX_Set_an_option(int value = none, int Property = 0)
//---------------------------------------------------------------------------------------------------------------------------
  
case Settings_example_1___Set_an_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //1. Lock the "Set another option" checkbox in the state ON.
                case checked:    w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);   break;
  
                //2. Unlock "Set another option" checkbox in the state ON.
                case unchecked:  w6_i_p7_CHECKBOX_Set_another_option(p7_ON);        break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment: 
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: onay kutusu amaçlandığı gibi kilitlenir ve açılır:

//--------------------------------------------------------------------------------------------------------------------------------


2. Şimdi, onay kutusunun kilitlenmesini ve altındaki iki onay kutusunun kilidinin açılmasını sağlayalım:

case Settings_example_1___Set_an_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked? 
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Lock both checkboxes----
                case checked:    w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);  
                                 w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_ON);
                break;

                //Unlock both checkboxes---
                case unchecked:  w6_i_p7_CHECKBOX_Set_another_option(p7_ON); 
                                 w6_i_p7_CHECKBOX_And_another_option(p7_ON);  
                break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: onay kutusu altındaki iki onay kutusunu kilitler ve kilidini açar:


Dinamiklerde bu şekilde gerçekleşir:

//--------------------------------------------------------------------------------------------------------------------------------


3. Şimdi aşağıdaki şemada gösterilen sorunu çözelim: onay kutuları karşılarındaki açılır listeleri kilitlemeli ve kilidini açmalıdır .


Bunu yapmak için:

  • API dosyasında bu onay kutularını bulmamız gerekiyor.
  • Hedef öğeler için kilitleme/kilit açma dizeleri yazın.

case Settings_example_1___Set_another_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Locking the element---
                case checked:    w6_s_p6_D_LIST_D_LIST_1(p6_LOCK);   break;
                
                //Unlocking the element---
                case unchecked:  w6_s_p6_D_LIST_D_LIST_1(p6_UNLOCK); break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___And_another_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Locking the element---
                case checked:    w6_s_p6_C_LIST_C_LIST_1(p6_LOCK);   break;
                
                //Unlocking the element---
                case unchecked:  w6_s_p6_C_LIST_C_LIST_1(p6_UNLOCK); break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: onay kutuları açılır listeleri kilitler ve kendilerini ana onay kutusuyla kilitler:

//--------------------------------------------------------------------------------------------------------------------------------


4. Bir sonraki göreve geçelim: açılır listeler, kullanıcı tarafından seçilen değeri başka bir pencerenin bir alanına çevirmelidir.


Bunu yapmak için:

  • API dosyasında açılır listeleri bulmak gerekir.
  • Kullanıcı seçim olayında değeribaşka bir pencerenin metin alanına aktarın.
case Settings_example_1___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  
               //-----------------------------------
               //Send user's choice to textbox "Comment 1" in another window.
               w7_s_p4_EDIT_Comment_1(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Send user's choice to textbox "Comment 2" in another window.
               w7_s_p4_EDIT_Comment_2(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;


*Sonuç: her iki açılır liste de değerlerini karşı penceredeki giriş alanlarına başarıyla gönderir:

//--------------------------------------------------------------------------------------------------------------------------------


5. Aşağıdaki görev bu şemada gösterilmiştir: Adlarını karşılarındaki giriş alanlarına göndermek için değiştirilen radyo düğmelerine ihtiyacınız vardır.



Bunu yapmak için:

  • API dosyasında bu radyo düğmelerinin yazıldığı yeri bulalım.
  • Gerekli girdi alanının bir fonksiyon çağrısını yazalım ve kullanıcı seçim olayında radyo düğmesinin adını ona gönderelim.

*Önemlinot: radyo düğmeleri geçişlidir çünkü KIB kodunda onlara SWITCH operatörü uygulanmıştır. Bu nedenle, hepsi için ortak bir parametreye sahiptirler ve API dosyasında aynı durumdadırlar.

//===========================================================================================================================
//WINDOW          :---: Settings example 2 | #: 7 | PFX: w_7
//                |   |
//GET/SET         :---: int w_7_Settings_example_2(int value = get_i, int Property = 0)
//----------------|   |------------------------------------------------------------------------------------------------------
//GROUP           :---: TYPE: R_BUTTONS | NAME: Some options group | PAR_TYPE: string | INIT OPTION: Choose option 1 | PFX: w7
//                |   |------------------------------------------------------------------------------------------------------
//LOCATION        :---: Window's Main Frame 
//----------------|   |------------------------------------------------------------------------------------------------------
//G/S PROPERTIES  :---: PFX: p7_ | PROPS: NONE
//                |   |------------------------------------------------------------------------------------------------------
//G/S ACTIONS     :---: p7_ON | p7_OFF | p7_LOCK_ON | p7_LOCK_OFF | p7_GET_STATE |
//----------------|   |------------------------------------------------------------------------------------------------------
//                |   |
//GET/SET CALL    :---: string w7_s_p7_R_BUTTON_Some_options_group(string value = get_s, int Property = 0)
//---------------------------------------------------------------------------------------------------------------------------
  
case Settings_example_2___Some_options_group:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Choose option 1"){}
               if(selected_option == "Choose option 2"){}
               if(selected_option == "Choose option 3"){}
              
              
               //We send user's choise into the textbox "Comment 3".
               w7_s_p4_EDIT_Comment_3(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: Düğmelerin değiştirilmesi giriş alanındaki metnin değişmesine neden olur. *Bu seçenekle ilgili küçük bir teknik sorun var. Bir sonraki sürümde düzeltilecektir.

İkinci bölüm tamamlandı.

Üçüncü bölümde tablo ile çalışacağız.

 


Parametre bağlama konusunun son kısmı.

Eleman parametrelerinin değerlerini tablo hücrelerine aktaralım.

Şema:



Çözüm:

  • API dosyasında gerekli elemanları bulalım.
  • Her birinde değeri atanmış tablo hücresine geçirmeyi yazalım.

case Settings_example_1___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  
               //-----------------------------------
               //Send user's choise to the cell "CELL_Account_name__Value"
               w8_s_p4_CELL_Account_name__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Send user's choice to textbox "Comment 2" in another window.
               w8_s_p4_CELL_Leverage__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------

               //Sending the slider's value into the table cell.
               w8_s_p4_CELL_Account_balance__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
               
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_number__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_2:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
               
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_server__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_3:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
      
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_currency__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Sending C_LIST value into the cell.
               w8_s_p4_CELL_Account_profit__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  

               //Sending the D_LIST value into the cell.
               w8_s_p4_CELL_Account_equity__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Sonuç: değerler seçilen tablo hücrelerine güvenli bir şekilde yerleştirilir.


Yukarıdaki örneklerden de görebileceğiniz gibi, basit ve kullanışlı bir çözüm geliştirdik. Umarım insanlar bunu faydalı bulur.


Bu, eleman parametrelerini bağlama konusunu sonlandırıyor.

 

Aşağıdaki konular ele alınmayı beklemektedir:

12. Kaydırıcı ve düğme alanının değer sınırlarının programlı olarak alınması/ayarlanması(_V_MIN, _V_MAX, _V_STEP, _DIGITS).

13. Elemanların durumunu sorgulama(_GET_STATE).

14. Metin ve çerçeve renklerini aralıklı değer sınırlarına bağlama.

15. API dosyasında yönlendirme.


Bir tema ekleme:

16. Mesaj ve uyarı pencerelerinin görünümünün program mantığının gerçekleştirilmesi.