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

 
hini #:
B urada zorunlu tür dönüşümü, kullanıcının işlevin dışına (string) yazmak zorunda kalmaması için bir işlevin içine yerleştirilebilir mi

Soruyu tam olarak anlayamadım, bu yüzden cevabım konu dışı olabilir.

Bunu şu şekilde yapabilirsiniz:


double işlevi, değer dönüşü adımında zorunlu bir dönüştürme kullanarak string türünde bir değişkene dönüş yapar.
string Spin_edit_value = (string)w6_d_p5_S_EDIT_Spin_the_value();

w7_s_p4_EDIT_Comment_2(Spin_edit_value);
 

Daha da basitleştirebilirim:

w7_s_p4_EDIT_Comment_2((string)w6_d_p5_S_EDIT_Spin_the_value());
 

Teorik olarak, bunu bu şekilde yapabilirsiniz:

w7_s_p4_EDIT_Comment_2(w6_d_p5_S_EDIT_Spin_the_value());

Derleyicinin kendisi double'ı string'e dönüştürür, ancak bunu tavsiye etmek istemem.

 
Реter Konow #:

Soruyu gerçekten anlamadım, bu yüzden cevabım konu dışı olabilir.

Bunu şu şekilde yapabilirsiniz:


double fonksiyonu, değer döndürme adımında zorunlu dönüştürme ile string tipinde bir değişken döndürür.
w7_s_p4_EDIT_Comment_2 işlevinin içinde daha sonra türü dönüştürün
double Spin_edit_value = 22.5;

w7_s_p4_EDIT_Comment_2(Spin_edit_value);
 
Реter Konow #:

Teorik olarak bu yapılabilir:

Derleyicinin kendisi double'ı string'e dönüştürecektir, ancak bunu tavsiye etmiyorum.

w7_s_p4_EDIT_Comment_2 işlevi, double türünü alan karşılık gelen bir aşırı yüklenmiş sürüm oluşturamaz mı?

 

Özellikleri ayarlama ve öğeler arasında değer döndürme ve iletme konusuna devam ediyoruz.


Birkaç seçeneğe baktık:

1. Bir metin giriş alanındaki metni ayarlama.

w7_s_p4_EDIT_Comment_1("Some random text");

2. Kaydırıcıya yeni bir değer atandı.

w6_i_p3_H_SLIDER_Roll_the_value(33);

3. Düğmelerle giriş alanı için rastgele bir sayı seçin.

w6_d_p5_S_EDIT_Spin_the_value(423.11);

4. Hesap Bilgisi tablosundaki hücrelere birden fazla metin dizesi gönderdi.

w8_s_p4_CELL_Account_name__Value("MyRealAccount");  

w8_s_p4_CELL_Account_number__Value("A001234647843B1");

w8_s_p4_CELL_Account_server__Value("MyServer");

w8_s_p4_CELL_Account_currency__Value("US Dollar");

w8_s_p4_CELL_Leverage__Value("1:1");

w8_s_p4_CELL_Account_balance__Value("1234567.23 $");


5. Son olarak, S_EDIT öğesinin yeni değerini döndürdük ve iki farklı pencereye gönderdik: Hesap Bilgisi tablosundaki hücre ve Ayarlar penceresindeki metin giriş alanı örnek 2.

 double Spin_edit_value = w6_d_p5_S_EDIT_Spin_the_value();//Делаем возврат значения параметра (тип double).
w8_s_p4_CELL_Account_profit__Value((string)Spin_edit_value);//При пересылке значение double приводим к типу string. Функция ячейки имеет тип string.
w7_s_p4_EDIT_Comment_2((string)Spin_edit_value);

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


Bu konuyu tamamlamak ve bir sonrakine geçmek için birkaç şey yapmamız gerekiyor:

1. Kaydırma çubuğunun rengini değiştirin.

2. S_EDIT tabanının ve metnin rengini değiştirin.

3. Düğmenin basılı ve basılı olmayan durumlarındaki renklerini değiştirin.

4. Zamanlayıcı olayında elemanlara değer göndermeyi kontrol edin.

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


1. Kaydırma çubuğunun rengini değiştirin:

   //To get slider's bar color:
   uint Sliders_bar_color = (uint)w6_i_p3_H_SLIDER_Roll_the_value(get_i, p3_COLOR_bar);
   
   //Print the returned value:
   Print("Sliders_bar_color =  ",Sliders_bar_color);

Sonuç:



Kaydırma çubuğuna farklı bir renk atayın:

   //To set slider's bar color:
   w6_i_p3_H_SLIDER_Roll_the_value((uint)clrRed, p3_COLOR_bar);


Sonuç:

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


2 Metnin rengini ve S_EDIT öğesinin tabanını değiştirin:

Düğmelerle giriş alanının tabanının orijinal rengini alalım:

   //To get spin edit's base color:
   uint Spin_edit_base_color = (uint)w6_d_p5_S_EDIT_Spin_the_value(get_d, p5_COLOR_base);

Günlüğe çıktı verin:

   //Print the returned value:
   Print("Spin_edit_base_color = ",Spin_edit_base_color);


Alanın tabanına farklı bir renk atayın:

   //To set spin edit's base color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrLightGreen, p5_COLOR_base);

Sonuç:


S_EDIT alanının metin renginin ayarlanması (p5 yerine p4 özellik öneki kullanılmıştır, çünkü S_EDIT için metin rengi özelliğini eklemeyi unuttum. hata bir sonraki sürümde düzeltilecektir).

   //To set spin edit's text color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrBrown, p4_COLOR_text);  


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


3. Düğmenin basılı ve basılı olmayan durumlardaki renklerini değiştirin:

Düğmenin nötr durumdaki rengini değiştirin:

w6_i_p1_BUTTON_Start((uint)C'255,166,0',p1_N_COLOR_base);


Düğmenin etkinleştirilmiş durumu için farklı bir renk ayarlayın:

w6_i_p1_BUTTON_Start((uint)C'166,255,0',p1_A_COLOR_base);


Düğmenin metin rengini nötr ve basılı durumları için de değiştirebilirsiniz, ancak küçük bir yazı tipinde bu fark edilmez. Bu nedenle farklı bir pencere seçelim:

   //Set text color for button's neutral state:

   //Button 1:
   w14_i_p1_BUTTON_BUY_OFF((uint)C'240,70,10',p1_N_COLOR_text);

   //Button 2:
   w14_i_p1_BUTTON_SELL_OFF((uint)C'240,70,10',p1_N_COLOR_text); 

Sonuç:


   //Set text color for button's active state:
   
  //Button 1
   w14_i_p1_BUTTON_BUY_OFF((uint)C'105,240,50',p1_A_COLOR_text);

  //Button 2
   w14_i_p1_BUTTON_SELL_OFF((uint)C'105,240,50',p1_A_COLOR_text);

Sonuç:


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


4. Zamanlayıcı olayında elemanlara değer göndermeyi kontrol edin:

void _OnTimer()
  {
   string Microseconds = (string)GetMicrosecondCount();
     
   //Send Microseconds to each cell-----------------
   w8_s_p4_CELL_Account_name__Value(Microseconds);
   w8_s_p4_CELL_Account_number__Value(Microseconds);
   w8_s_p4_CELL_Account_server__Value(Microseconds);
   w8_s_p4_CELL_Account_currency__Value(Microseconds);
   w8_s_p4_CELL_Leverage__Value(Microseconds);
   w8_s_p4_CELL_Account_balance__Value(Microseconds);
   w8_s_p4_CELL_Account_profit__Value(Microseconds);
   w8_s_p4_CELL_Account_equity__Value(Microseconds);
   w8_s_p4_CELL_Account_free_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_stop_out_level__Value(Microseconds);

Sonuç:


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

Bu, bu konuyu tamamlamaktadır.


Daha sonra, konulara geçiyoruz:

9. Önceki değerin geri döndürülmesi (_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.

 
hini #:

w 7_s_p4_EDIT_Comment_2 işlevinin içinde, ardından türü

Yapabilirsiniz. Ancak, örtük bir tür dönüşümü olduğu için ek bir uyarı olacaktır. Teknik olarak, sadece bir sayı gönderebilirsiniz. Değişken olmadan. Bunu herkesin takdirine bırakıyorum.

 
hini #:

w 7_s_p4_EDIT_Comment_2 işlevinin içinde, ardından türü

w7_s_p4_EDIT_Comment_2 işlevinin içinde hiçbir şey yoktur. Bu, merkezi fonksiyonu çağıran bir sarmalayıcıdır. Ve sarmalayıcı işlev yalnızca kendi türünde bir değer döndürebilir.



h ini #: w7_s_p4_EDIT_Comment_2 işlevi, double türünü alan karşılık gelen bir aşırı yüklenmiş sürüm oluşturamaz mı?

Ne yazık ki yapamaz, çünkü bu bir sarmalayıcıdır. Bunu karmaşıklaştırmanın bir anlamı yok. Tüm iş merkezi fonksiyonlar tarafından yapılır.
 
Реter Konow #:

w7_s_p4_EDIT_Comment_2 işlevinin içinde hiçbir şey yoktur. Bu sadece merkezi bir fonksiyonu çağıran bir sarmalayıcıdır. Sarmalayıcı işlevler yalnızca kendi türlerinde değerler döndürebilir.


Yapamaz, çünkü bu bir sarmalayıcı. Bunu karmaşıklaştırmaya gerek yoktur. Tüm iş merkezi fonksiyon tarafından yapılır.

Doğru.