Обсуждение статьи "Графические интерфейсы XI: Нарисованные элементы управления (build 14.2)"

 

Опубликована статья Графические интерфейсы XI: Нарисованные элементы управления (build 14.2):

В новой версии библиотеки все элементы библиотеки будут рисоваться на отдельных графических объектах типа OBJ_BITMAP_LABEL. Также продолжим описывать оптимизацию кода: рассмотрим изменения в классах, которые являются ядром библиотеки.

Ниже показан внешний вид различных типов кнопок:

 Рис. 9. Демонстрация внешнего вида нескольких типов кнопок.

Рис. 9. Демонстрация внешнего вида нескольких типов кнопок.

Автор: Anatoli Kazharski

 

Класс, а это уже финальная версия или будут еще какие-то доработки? Что бы уж если переходить со стандартной панельки на вашу, то потом много не переделывать в случае обновлений.

 
Maxim Dmitrievsky:

Класс, а это уже финальная версия или будут еще какие-то доработки? Что бы уж если переходить со стандартной панельки на вашу, то потом много не переделывать в случае обновлений.

Сейчас уже есть ещё одна статья на публикацию с некоторыми дополнениями. В ячейки таблицы будут добавлены поля ввода и комбо-боксы.

В качестве анонса могу показать, как это будет выглядеть:


//---

И ещё планируется интеграция графической стандартной библиотеки, которая описана вот в этой статье: Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R

После этого я сделаю перерыв. Наконец-то. )

 

Я не совсем понимаю указатели так же мне не понятен метод работы с методами.

При Вашем создании например фон, интелленс показывает массу методов которые к фону не применимы.

Это вызывает путаницу большую...

Можно ли как то создавать обьекты с тем что бы были видны только методы применимые к нему ?


вот пример 

class test

{

int met_1();

int met_2();

int met_3();

int met_4();

int met_5();

};


class TEST2: public test

{


}

Как сделать так что бы в классе наследнике были видны только 3 4 методы а остальные нет ?

 
Vladimir Pastushak:

...

Как сделать так что бы в классе наследнике были видны только 3 4 методы а остальные нет ?

Обозначить спецификаторы доступа.

Справочник MQL5Основы языкаПеременные > Раздел Спецификаторы доступа

Для доступа к членам структур и классов используются следующие спецификаторы:

  • public – разрешает ничем неограниченный доступ к переменной или методу класса;
  • protected – разрешает доступ со стороны методов данного класса, а также со стороны методов публично наследуемых классов. Иной доступ невозможен;
  • private – разрешает доступ к переменным и методам класса только из методов данного класса.
  • virtual – применим только к методам класса (но не к методам структур) и сообщает компилятору, что данный метод должен быть размещен в таблице виртуальных функций класса.

 
Anatoli Kazharski:

Обозначить спецификаторы доступа.

Справочник MQL5Основы языкаПеременные > Раздел Спецификаторы доступа


Я читал это и смотрел видео уроки , но чет как то не доходит...

Можно простой пример ?

 
Vladimir Pastushak:

Я читал это и смотрел видео уроки , но чет как то не доходит...

Можно простой пример ?

Почитайте хотя бы вот эту статью: Основы объектно-ориентированного программирования >>>. В ней всё очень доступно изложено и есть примеры.

Или откройте ветку с вопросами по объектно-ориентированному программированию.

 
Anatoli Kazharski:

Почитайте хотя бы вот эту статью: Основы объектно-ориентированного программирования >>>. В ней всё очень доступно изложено и есть примеры.

Или откройте ветку с вопросами по объектно-ориентированному программированию.


Я читал это все, проблема в том что Вам как программисту она кажется идеальной или правильной, Вы в теме. 

Но для меня как для человека который не в теме, она не понятна.... Хотя я пишу в процедурном стиле очень давно, и пытаюсь освоить обьекты..

 
Vladimir Pastushak:

Я не совсем понимаю указатели так же мне не понятен метод работы с методами.

При Вашем создании например фон, интелленс показывает массу методов которые к фону не применимы.

Это вызывает путаницу большую...

Можно ли как то создавать обьекты с тем что бы были видны только методы применимые к нему ?

вот пример 

class test

{
int met_1();
int met_2();
int met_3();
int met_4();
int met_5();
};

class TEST2: public test
{
}

Как сделать так что бы в классе наследнике были видны только 3 4 методы а остальные нет ?

Точно неприменимы? Должно быть, показываются методы родительских объектов. В таком случае может помочь документация.  В стандартной библиотеке мы добавили специальные блоки, которые показывают унаследованные методы. Например, для CWndObj:

Методы унаследованные от CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare


Методы унаследованные от CWnd

Create, Destroy, OnMouseEvent, Name, ControlsTotal, Control, ControlFind, Rect, Left, Left, Top, Top, Right, Right, Bottom, Bottom, Width, Width, Height, Height, Size, Size, Size, Move, Move, Shift, Contains, Contains, Alignment, Align, Id, Id, IsEnabled, Enable, Disable, IsVisible, Visible, Show, Hide, IsActive, Activate, Deactivate, StateFlags, StateFlags, StateFlagsSet, StateFlagsReset, PropFlags, PropFlags, PropFlagsSet, PropFlagsReset, MouseX, MouseX, MouseY, MouseY, MouseFlags, MouseFlags, MouseFocusKill, BringToTop



 
Vladimir Pastushak:

Я читал это все, проблема в том что Вам как программисту она кажется идеальной или правильной, Вы в теме. 

Но для меня как для человека который не в теме, она не понятна.... Хотя я пишу в процедурном стиле очень давно, и пытаюсь освоить обьекты..

Значит попробуйте прочитать ещё раз. Там есть чёткий ответ на Ваш вопрос. Понятнее уже некуда.

Задавайте вопросы там или в любой другой ветке, где обсуждается ООП. Здесь ведётся обсуждение библиотеки для создания графических интерфейсов.

 

Привет. Толь, не нашёл что-то в примерах как теперь разделительную линию могу нарисовать в окне.

Что означает index?

bool CSeparateLine::CreateSeparateLine(const int index,const int x_gap,const int y_gap,const int x_size,const int y_size)

Параметр какого индекса, индекса чего, туда передавать?

И ещё вопрос заодно: при рисовании текстовой метки (CTextLabel) на фоне окна, имеющего некую прозрачность, метки рисуются на своём непрозрачном фоне, который не реагирует на метод Alpha(), и выглядит это не ахти ... Есть возможность сделать фон меток так же с прозрачностью?