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

 
//--------------------------
//FIRST GROUP
//--------------------------
GROUP, "Group 1",

__, CHECKBOX, "Checkbox 100",  

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, CHECKBOXES, W, 120,  END,
//--------------------------
//--------------------------------------------------------------
//1. WRITE THE NAME OF THE CHECKBOX THAT WILL BLOCK THE OTHERS:
//2. WRITE KEYWORD "BLOCKS".
//3. WRITE THE NAMES OF THE ELEMENTS (OR GROUPS) IT WILL BLOCK.
//4. PUT "END" IN THE END.
//5. OR, WRITE THE NAME OF THEIR GROUP.
//--------------------------------------------------------------
"Checkbox 100", BLOCKS, "Group 2", END,
//--------------------------------------------------------------

//--------------------------
//SECOND GROUP
//--------------------------
GROUP, "Group 2",


__, H_SLIDER, "H_Slider 1", W, 120,       S_EDIT, "Textbox 1",         W, 120, 

__, C_LIST,   "Combobox 1", W, 120,       D_LIST, "Combobox 2",        W, 120, 

__, BUTTON,   "Button 1",   W,120,        D_BUTTON, "Dialog button 1", W, 120, 

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2H, "Checkbox 100", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 

//------------------------------------------------------
 
_Y2H 是什么,是否有 _X2H ?
 
hini #: _Y2H Что это такое, и есть ли это _X2H?

_Y2H ifadesini ayrıştıralım:

  • Y bir koordinattır
  • 2 "için" anlamına gelir. Bir şeyi gösterir.
  • H yüksekliğin kısaltmasıdır.

Y'den Yüksekliğe.

Koordinat sisteminde, nesnenin Y noktasından gövdesi boyunca nesnenin yüksekliğine (y_boyutu) eşit bir mesafede hareket etmek en alt noktasına götürür. Koparılacak nesnenin Y koordinatı, koparılacak nesnenin yüksekliği boyunca inmeli ve en alt noktasında sonlanmalıdır. Yani, çapa nesnesinin yükseklik mesafesini kapsamalıdır, bu nedenle çapa _Y2H olarak adlandırılır.


2. _X2H mevcut değildir çünkü X koordinatı dikey düzlemde değil sadece yatay düzlemde tutturulabilir ve H yükseklik anlamına gelir. X koordinatının belirtilen nesnenin X + X_SIZE (Genişlik) noktasına yaslandığı anlamına gelen bir _X2W yaslaması vardır.


Yakalama konusu daha sonra daha ayrıntılı olarak ele alınacaktır.

 

Dün konuşmaya başladığımız numaralandırma konusunu bugün bitireceğiz.

 

Bağlamalar konusunda, katı kurallar olduğunu ve şu anda bunları denemeye çalışmanın bir anlamı olmadığını ekleyeceğim. Daha eksiksiz bir açıklama için bekleyin.

Eleman grupları için ayrı ayrı çalışan bağlayıcılar ve gruplar içindeki tek tek elemanlarla çalışan bağlayıcılar vardır. Ayrıca, öğeler içindeki nesneleri (metin veya simgeler gibi) konumlandırmak için uygun bağlar da vardır.

Bu konuya daha sonra geleceğiz.

 
Реter Konow #:

Dün konuşmaya başladığımız numaralandırma konusunu bugün bitireceğiz.

Ancak, dikkatlice düşündükten sonra, numaralandırma konusunun tamamlanmasını ertelemeye karar verdim. Bu konudaki diğer materyalleri anlamak, okuyucuların henüz sahip olmadığı temel dil kuralları bilgisini gerektirir.

Şimdilik, kontroller ve bağlamalar ile tanışmaya devam edelim.

 

Şimdiye kadar çoğu durumda basit bir BUTON düğmesi ile uğraştık. Herkes bir düğmenin ne olduğunu bilir, kendini açıklayıcıdır. Ancak bazı ayrıntılara girmeye değer. Aynı şey daha önce çalıştığımız diğer öğeler için de geçerlidir. Bunu şu şekilde yapalım: önce ana özellikleri ve işlevleri gözden geçirelim, genel anlamda her şeye değinelim ve daha sonra daha ayrıntılı bir değerlendirme için her bir öğe üzerinde ayrı ayrı duracağız.

Düğme, basıldığında durum değiştiren etkileşimli bir öğedir. Grafiksel bir arayüzde farklı amaçlar için kullanılır. Çoğunlukla bir şeyi açmak veya kapatmak için, ancak bazen bir pencereyi çağırmak için. Basit bir düğmenin uygulama çeşitleri çok fazladır. Oldukça evrensel bir unsurdur.

Başka hangi unsurları düşündük? Örneğin, CHECKBOX. Neden bir onay kutusuna ihtiyacınız var? Program ayarlarında seçenekleri etkinleştirmek, devre dışı bırakmak veya engellemek için bir onay kutusu gereklidir. Birkaç seçenek arasından seçim yapmanız gerekiyorsa, R_BUTTON(radyo düğmesi) elemanı uygundur. Ancak sadece birkaç seçenek olması şartıyla.

Ve seçenekler önemli ölçüde fazlaysa, ancak aşırı derecede fazla değilse? O zaman D_LIST açılır listesi veya C_LIST birleşik listesi kullanılır. Bu iki öğe arasındaki fark, kullanıcının istediği seçimi girebileceği bir metin giriş alanının varlığı ya da yokluğudur. D_LIST 'te böyle bir alan vardır, C_LIST'teyoktur.

Peki programda çok fazla seçenek olduğunda ne yapmalı? Açılır listeler küçük boyutları nedeniyle rahatsız edici hale gelir. Çözüm, büyük pencerelerde uzun kaydırılabilir sayfalardır. Örnekleri tasarımcının yazı tipi, sesler ve çerçeveler pencerelerinde görebilirsiniz.

Ancak, bu listeler çok uzun oldukları için bir kaydırma çubuğuna ihtiyaç duyarlar. İşte bu yüzden onlar için özel bir öğe var."Görüş alanı" V_BOX. İki kaydırma çubuğu ve kendi tuvali olan basit bir öğe. Bu arada, kaydırma hem dikey hem de yataydır. Ve tuvalin boyutu, yerleştirilen içeriğin hesaplanmasından otomatik olarak ayarlanır.

Liste öğelerine"Liste Öğesi"nin kısaltması olan L_ITEM adı verilir. Bunlar ayrı bir grupta toplanır ve belirtilen görüş alanının tuvaline çizilir. Her bir öğe bir menü öğesi veya seçeneğinin adı olarak adlandırılır ve bir SWITCH_ALL anahtar sözcüğü ile değiştirilirler. Ve L_ITEM öğelerinin listesini V_BOX genel bakış alanına girmek için"IN" anahtar sözcüğü kullanılır. Konumlandırma basittir - LEFT_TOP, 0,0,.


Şimdi, listelenen öğelere daha ayrıntılı olarak ve aynı sırayla bakalım. Konumlandırma, durumlar, özellikler ve nitelikler hakkında konuşacağız.

...Ve tüccar programları bağlamında uygulama seçeneklerini ele alacağız.

 

Sıradan düğme: BUTTON

4 çeşit kurucu düğme:

  • düz düğme - BUTON

Nispeten modası geçmiş bir görünüme ve herhangi bir klasik düğme gibi basit bir işlevselliğe sahiptir. Bir simge var.


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

  • Etkileşimli düğme I_BUTTON - etkileşimli düğme:

İmlecin üzerine gelmesine / uzaklaşmasına sorunsuzca yanıt veren güzel bir etkileşimli düğme. Normal bir düğme olarak kullanılır, ancak daha az görünür ve nötr durumda ana hatları yoktur. Çoğunlukla metin içermez ve bir simge içerir. Daha çok kare şeklindedir.


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

  • Araç çubuğu düğmesi (MT4'teki gibi) TB_BUTTON - Araç çubuğu düğmesi:

Esas olarak ana pencerenin başlığındaki araç çubuğu için kullanılır. Genellikle metin içermez, ancak bir simgeye sahiptir ve genellikle kare şeklindedir. Üzerine gelindiğinde imlece yapışır. Pencereleri veya fonksiyonları çağırır. Bir oku vardır.


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

  • D_BUTTON - diyalog düğmesi:

Kullanıcı ile etkileşim kurmak için diyalog kutularının altında durur. "Ok", "Yes", "No", "Cancel", "Abort", "Continue", "Accept", "Next", "Previous", "Skip", "Confirm", "Open", "Close", .... gibi metinleri taşır. ve bu türdeki diğer kelimeler.


Tüm düğmelerde simgeler ve metinlerin yanı sıra farklı durumlar için renk de ayarlayabilirsiniz.

Aynı zamanda, düğmeler duruma bağlı olarak metin ve simgeyi değiştirebilir. Nötr durumda bir metin veya simge, aktif durumda ise farklıdır.


Örneğin:

Tüm düğmeler basılı ve nötr durumda:


Ve şimdi onlara bastık ve metin ve simgeleri değişti: (diyalog düğmesi hariç, çünkü basıldıktan sonra pencereyi kapatır ve gerekli değildir)


Etkileşimli düğmenin metni simgenin üzerine yerleştirilmiştir, ancak simgeyi ve metni düğmenin içine yerleştirmek mümkün olduğu için bu şekilde tasarlanmıştır.

 

Böylece, düğmeler tıklandığında metni değiştirebilir. Dahası, metin ve düğme adı farklı şeylerdir. Nötr durum için metin N_TEXT kelimesiyle ayarlanabilir ve düğme adı yerine başka bir kullanıcı metni görünecektir.

Aynı şey simge için de geçerlidir. Nötr durum ve aktif durum için bir simge belirleyebilirsiniz.


Kod:

NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*MARGINS OF THE WINDOW*/   MARGINS, 40,40,/*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, "Buttons group",

__, BUTTON,   "Button 1", W, 120,_,H, 50,   D_BUTTON, "D button 1",   W, 120,_,H, 50,

__, I_BUTTON, "I Button", W, 120,_,H, 50,   TB_BUTTON, "TB button 1", W, 120,_,H, 50, 

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Button 1",    N_TEXT,  "Neutral state",

"Button 1",    A_TEXT,  "Active state",

"Button 1",    N_LABEL, "::Images\\16x16\\About.bmp",

"Button 1",    A_LABEL, "::Images\\16x16\\3d bar chart.bmp",

"Button 1",    FIC,
//----------------------------

//----------------------------
"I Button",    N_TEXT,  "Neutral", 

"I Button",    A_TEXT,  "Active",

"I Button",    N_LABEL, "::Images\\16x16\\Accounting.bmp",

"I Button",    A_LABEL, "::Images\\16x16\\Address book.bmp", 

"I Button",    FIC,
//----------------------------

//----------------------------
"D button 1",    N_TEXT,  "Also Neutral",

"D button 1",    A_TEXT,  "Also Active",

"D button 1",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",

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

//----------------------------
"TB button 1",    N_TEXT,  "TB Neutral",

"TB button 1",    A_TEXT,  "TB Active",

"TB button 1",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",

"TB button 1",    A_LABEL,  "::Images\\16x16\\Address book.bmp", 

"TB Button 1",    FIC,

//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
 

Belki de düğmelerin ana işlevlerinden biri pencereleri çağırmaktır. Bir penceredeki düğmeye bastığınızda başka bir pencere açılır.

Bu nasıl yapılır?

İki şekilde:

  • Düğme özelliklerine OPENS_WINDOW anahtar sözcüğünü ve ardından çağrılacak pencerenin adını yazarız.
  • Ya da düğmeyi çağırması gereken pencereyle aynı şekilde adlandırır ve düğme metnini gizleriz. Ya da düğme metnini N_TEXT ve A_TEXT sözcükleriyle geçersiz kılın.

Şunu unutmamak önemlidir: düğmelerin veya menü öğelerinin adlarını pencerelerin adlarıyla eşleştirmek, bu öğelere tıkladığınızda bu pencerelerin açılmasına neden olur.

//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW, 
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "Just a window",
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//------------------------------------------------------ 
/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  
//------------------------------------------------------

END_WINDOW,
//----------------------------------------------------------------------------------




//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*MARGINS OF THE WINDOW*/   MARGINS, 40,40,/*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, "Buttons group",

__, BUTTON,  "Just a window", W, 150, //the button WILL call the window due to sharing the same name.   

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Just a window",    N_TEXT,  "Press to open",//redefine text on the button

"Just a window",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------


Ve ikinci varyant:

//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW, 
 
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "Just a window",
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//------------------------------------------------------ 
/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  
//------------------------------------------------------

END_WINDOW,
//----------------------------------------------------------------------------------




//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*MARGINS OF THE WINDOW*/   MARGINS, 40,40,/*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, "Buttons group",

__, BUTTON,  "Press to open", W, 150,   

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Press to open", OPENS_WINDOW, "Just a window",//opens the window by the keyword 

"Press to open", N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------



Sonuç: