В ходе выполнения задачи по динамическому добавлению /удалению вкладок и добавлению / удалению в массив вкладок чартов, столкнулся с проблемой невозможности получения имени вкладок в классе CTabs. В связи с этим предлагаю разработчику дополнить данный класс методом получения имени вкладки:
//--- Устанавливает (1) текст (имя вкладки) по указанному индексу(2) получает текст (имя вкладки) по указанному индексуvoid Text(constuint index,conststring text); // этот метод естьstring Text(constuint index) { return m_tab[index].text; } // этого не хватает
Добавление данного метода необходимо в связи с тем, что даже наследуясь от класса CTabs с целью дополнить отсутствующими методами, будет невозможно реализовать перегруженный методText, т.к. объект m_tab[] находится в защищенной области класса. А править класс под себя нарушает принцип ООП.
в файле меню нет такого события, а если вставить в основной файл то ругается
В пользовательском классе приложения нужно создать метод CProgram::OnTradeEvent().
А в главном файле его нужно вызывать в функции OnTrade():
//+------------------------------------------------------------------+//| Trade function |//+------------------------------------------------------------------+voidOnTrade(void)
{
program.OnTradeEvent();
}
//---
Например, у меня такое содержание метода CProgram::OnTradeEvent():
//+------------------------------------------------------------------+//| Событие торговой операции |//+------------------------------------------------------------------+void CProgram::OnTradeEvent(void)
{
//--- Отправка торгового события всем графикам
m_events.SendEventToAllCharts(0,ON_TRADE_EVENT,0,0.0,m_program_name);
//--- Установим сделки последней позицииif(m_show_deals.CheckButtonState())
if(m_vdeals.ShowDealsLastPosition())
ResetWindow();//--- Проверка расстояния стоп-лоссаif(m_trailing_stop.CheckButtonState())
m_ctrade.CheckStopLossSize(::Symbol());
//--- Обнуление переменных для торговых операций
m_ctrade.ZeroCalcPositionVariables();
//--- Инициализация массива баланса и обновление серии на графике
InitBalanceArray();
m_line_chart.SeriesUpdate(0,m_balance_data,"Balance",clrCornflowerBlue);
}
Не могу сообразить как привязать элемент_2, например таблицу к нижнему краю элемент_1, например так же таблицы, т.е. элемент_1 находятся над элемент_2. В результате нужно, что бы при изменении размеров чарта, нижняя граница элемент_1 смещалась и за ней смещалась бы верхняя граница элемент_2. Реализацию смещения нижних границ в библиотеке есть, методы AutoYResizeMode и AutoYResizeBottomOffset, а вот как реализовать смещение верхних границ не могу сообразить.
Konstantin: Не могу сообразить как привязать элемент_2, например таблицу к нижнему краю элемент_1, например так же таблицы, т.е. элемент_1 находятся над элемент_2. В результате нужно, что бы при изменении размеров чарта, нижняя граница элемент_1 смещалась и за ней смещалась бы верхняя граница элемент_2. Реализацию смещения нижних границ в библиотеке есть, методы AutoYResizeMode и AutoYResizeBottomOffset, а вот как реализовать смещение верхних границ не могу сообразить.
Есть ещё методы для привязки элементов:
//--- Режим (получение/установка) привязки элемента к (1) правому и (2) нижнему краю окнаbool AnchorRightWindowSide(void) const { return(m_anchor_right_window_side); }
void AnchorRightWindowSide(constbool flag) { m_anchor_right_window_side=flag; }
bool AnchorBottomWindowSide(void) const { return(m_anchor_bottom_window_side); }
void AnchorBottomWindowSide(constbool flag) { m_anchor_bottom_window_side=flag; }
//---
В сочетании с этими свойствами попробуйте решить задачу.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В ходе выполнения задачи по динамическому добавлению /удалению вкладок и добавлению / удалению в массив вкладок чартов, столкнулся с проблемой невозможности получения имени вкладок в классе CTabs. В связи с этим предлагаю разработчику дополнить данный класс методом получения имени вкладки:
Добавление данного метода необходимо в связи с тем, что даже наследуясь от класса CTabs с целью дополнить отсутствующими методами, будет невозможно реализовать перегруженный метод Text, т.к. объект m_tab[] находится в защищенной области класса. А править класс под себя нарушает принцип ООП....
@Pavel Kolchin, чтобы стрелки от сделок не висели над панелью используйте метод CWndEvents::ResetWindow().
куда его вставить?
В OnTrade() попробуйте.
не могу, ругается
в файле меню нет такого события, а если вставить в основной файл то ругается
не могу, ругается
в файле меню нет такого события, а если вставить в основной файл то ругается
В пользовательском классе приложения нужно создать метод CProgram::OnTradeEvent().
А в главном файле его нужно вызывать в функции OnTrade():
//---
Например, у меня такое содержание метода CProgram::OnTradeEvent():
Не могу сообразить как привязать элемент_2, например таблицу к нижнему краю элемент_1, например так же таблицы, т.е. элемент_1 находятся над элемент_2. В результате нужно, что бы при изменении размеров чарта, нижняя граница элемент_1 смещалась и за ней смещалась бы верхняя граница элемент_2. Реализацию смещения нижних границ в библиотеке есть, методы AutoYResizeMode и AutoYResizeBottomOffset, а вот как реализовать смещение верхних границ не могу сообразить.
Есть ещё методы для привязки элементов:
//---
В сочетании с этими свойствами попробуйте решить задачу.