Галерея UI написанных на MQL - страница 33

 
Реter Konow #:
Я не совсем понимаю, о чем идет речь, но если мы говорим о настройке свойств отдельных элементов внутри или вне группы, то нет. Вам не нужно их задавать. Однако в случае множественной инициализации атрибутов (как в примере выше) необходимо поставить "END" в конце строки перечисления.

"END" находится в конце нескольких типов перечислений, к которым я перейду позже. Вкратце.

1. перечисление общих свойств однородных элементов в определенной группе, что является одним из типов перечислений, заканчивающихся на "END".

2. перечисление элементов, которые необходимо заблокировать.

3. перечисление блокируемых окон.

4. перечисление переключаемых элементов

5. список синхронизируемых элементов (со ссылкой на их аргументы).


Для понимания 2,3,4,5,6 нужен реальный код.
 
Edgar Akhmadeev #:

С большим сожалением не обнаружил никаких упоминаний о рисовании элементов прямо на закрашенном канвасе, закрыв весь график. Другими словами - одно окно "full screen", без рамки и кнопок закрытия и пр.

Это то, что мне и нужно. Не панельки поверх графика.

Если это не реализовано, то для Вас это нетрудно. Добавить возможность открытия окна в размер графика и без рамки.

Есть масштабируемое динамичное окно разворачивающееся во весь график. В этой версии отключено, но в следующей добавлю. Подойдет ли такой вариант?
 
hini #:
Для понимания 2,3,4,5,6 нужен реальный код.
Хорошо, сегодня покажу примеры.
 
Реter Konow #:
Есть масштабируемое динамичное окно разворачивающееся во весь график. В этой версии отключено, но в следующей добавлю. Подойдет ли такой вариант?

Я пока не знаю, каково оно будет. Если окно будет разворачиваться на весь график, сохраняя рамки и кнопки закрытия/минимизации - это будет шаг вперёд к моей хотелке. Но если уже реализовано рисование этих элементов окна, несложно отключать это рисование  флагом FULL_SCREEN. У Вас графический дизайнер так и выглядит.

Вопросов много, не задаю, пока идёт процесс публикации уроков. Что-то прояснится со временем.

 
Edgar Akhmadeev #:

1. Я пока не знаю, каково оно будет. Если окно будет разворачиваться на весь график, сохраняя рамки и кнопки закрытия/минимизации - это будет шаг вперёд к моей хотелке. Но если уже реализовано рисование этих элементов окна, несложно отключать это рисование  флагом FULL_SCREEN. У Вас графический дизайнер так и выглядит.

Вопросов много, не задаю, пока идёт процесс публикации уроков. Что-то прояснится со временем.

1. Подумаю над опцией "сверхразворота" динамичного окна с уходом рамок за поле видимости при клике на особую зону, например верхний левый угол. Но это позже. Сначала выпущу обычное динамичное окно. 

2. Понимаю, хорошо.

 

Поскольку язык разметки KIB не имеет глубины сложности и дальнейший материал так же прост в изучении как начальный, отклонюсь от порядка изложения и приведу перечисления заканчивающиеся на к.слово "END".

1. Первое перечисление мы изучили в прошлых примерах: массовая установка свойств элементов одного типа внутри группы.

  • Необходимо написать     (на этом языке переводится как "эта группа").
  • Поставить тип элементов свойства которых собираемся установить во множественном числе, например,     BUTTONS. 
  • Перечислить свойства и значения через запятую (без знака _,) например:      W, 200, H,30, N_COLOR, (uint)clrRed,   A_COLOR, (uint)clrGreen,  P_COLOR,  (uint)clrYellow,..., 
  • Поставить  END в конце перечисления.

При множественной инициализации свойств это правило работает в отношении всех элементов. Свойства не упомянутые в перечислении сохранят значения  по умолчанию, либо те значения которые были им установлены пользователем до строки перечисления.


1.

Свойство элемента ВСЕГДА имеет последнее заданное значение. 

На этой картинке все кнопки кроме верхней со значением высоты по умолчанию. Верхней кнопке пользователь назначил высоту 50 рх. Ниже по коду это значение не переопределено, так как в перечислении свойств кнопок установлено только ШИРИНА (120 px).



2.

Здесь ранее заданное значение высоты кнопки "button 1" переписывается новым значением в строке перечисления и более не работает.



3. А на этом примере, переписывается значение установленное в перечислении для одной конкретной кнопки в строке ниже перечисления:



 

Код:

Вариант 1:


//------------------------------------------------------
GROUP, A,
 
__, CHECKBOX, "Checkbox 1",         BUTTON, "button 1", H, 50, 
__, CHECKBOX, "Checkbox 2",         BUTTON, "button 2",          
__, CHECKBOX, "Checkbox 3",         BUTTON, "button 3",        
__, CHECKBOX, "Checkbox 4",         BUTTON, "button 4",           
__, CHECKBOX, "Checkbox 5",         BUTTON, "button 5",           
__, CHECKBOX, "Checkbox 6",         BUTTON, "button 6",         

END_GROUP,
//--------------------------
//--------------------------
// SET PROPERTIES EXPLICITLY FOR BUTTONS
//--------------------------
i, BUTTONS,     W, 120,   END,
//--------------------------
// SET PROPERTIES EXPLICITLY FOR CHECKBOXES
//--------------------------
i, CHECKBOXES,  W, 90,    END,
//--------------------------
//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 40,
//--------------------------


Вариант 2:

//------------------------------------------------------
GROUP, A,
 
__, CHECKBOX, "Checkbox 1",         BUTTON, "button 1"  
__, CHECKBOX, "Checkbox 2",         BUTTON, "button 2",          
__, CHECKBOX, "Checkbox 3",         BUTTON, "button 3",        
__, CHECKBOX, "Checkbox 4",         BUTTON, "button 4",           
__, CHECKBOX, "Checkbox 5",         BUTTON, "button 5",           
__, CHECKBOX, "Checkbox 6",         BUTTON, "button 6",         

END_GROUP,
//--------------------------
//--------------------------
// SET PROPERTIES EXPLICITLY FOR BUTTONS
//--------------------------
i, BUTTONS,     W, 120, H, 20,  END,
//--------------------------
//OVERWRITE PREVIOUS VALUE FOR THIS SPECIFIC BUTTON.
//--------------------------
   "button 1", H, 50,
//--------------------------
// SET PROPERTIES EXPLICITLY FOR CHECKBOXES
//--------------------------
i, CHECKBOXES,  W, 90,    END,
//--------------------------
//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 40,
//--------------------------
 
Реter Konow #:

 

Много лет назад разбирал ваш код и пробовал внедрить его в свои системы. 

Столкнулся с тем, что не разобрался как строить динамические формы в процессе. Это возможно и если да, то. пожалуйста, скиньте примеры. Так, же уточните, возможно ли в процессе меня свойства объякта, например шрифт, размер, положение на форме.

 

Второй тип перечисления - i, SWITCH,..., END. 

Переключает активированное состояние между элементами, имена которых прописаны между к.словом SWITCH, и к.словом END,


1.



2.


КОД:

GROUP, A,
 
__, R_BUTTON, "R_button 1",  
__, R_BUTTON, "R_button 2",  
__, R_BUTTON, "R_button 3",  
__, R_BUTTON, "R_button 4",  
__, R_BUTTON, "R_button 5",  
__, R_BUTTON, "R_button 6",  

END_GROUP,
//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
//SET GAPS:
//--------------------------
i, Y_GAP, 20,
//--------------------------
//USE SWITCH ENUMERATION TO SELECT ONE ELEMENT IN THE GROUP:
//--------------------------
 i, SWITCH, 
            "R_button 1", "R_button 2", "R_button 3", 
            "R_button 4", "R_button 5", "R_button 6",  
            
      END,
//--------------------------
 
Sergey Likho #:

Много лет назад разбирал ваш код и пробовал внедрить его в свои системы. 

Столкнулся с тем, что не разобрался как строить динамические формы в процессе. Это возможно и если да, то. пожалуйста, скиньте примеры. Так, же уточните, возможно ли в процессе меня свойства объякта, например шрифт, размер, положение на форме.

В этой версии конструктора динамичное окно отключено. Менять различные свойства элементов, в том числе шрифты, можно. Сейчас провожу образовательную работу по языку разметки в этой ветке. Рекомендую полистать предыдущие страницы. Там материал могущий помочь и научить. Однако тему расположения элементов на форме полностью еще не покрыл. Это впереди. Также, когда опубликую движок можно подключать интерфейсы к пользовательским приложениям.