123 righe
6,1 KiB
MQL5
123 righe
6,1 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| iTestTable.mq5 |
|
|
//| Copyright 2025, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2025, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
#property indicator_separate_window
|
|
#property indicator_buffers 0
|
|
#property indicator_plots 0
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Включаемые библиотеки |
|
|
//+------------------------------------------------------------------+
|
|
#include "Controls\Controls.mqh" // Библиотека элементов управления
|
|
|
|
CPanel *panel=NULL; // Указатель на графический элемент Panel
|
|
CTable *table; // Указатель на объект таблицы (Model)
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Custom indicator initialization function |
|
|
//+------------------------------------------------------------------+
|
|
int OnInit()
|
|
{
|
|
//--- Ищем подокно графика
|
|
int wnd=ChartWindowFind();
|
|
|
|
//--- Создаём графический элемент "Панель"
|
|
panel=new CPanel("Panel","",0,wnd,100,40,400,192);
|
|
if(panel==NULL)
|
|
return INIT_FAILED;
|
|
//--- Устанавливаем параметры панели
|
|
panel.SetID(1); // Идентификатор
|
|
panel.SetAsMain(); // На графике обязательно должен быть один главный элемент
|
|
panel.SetBorderWidth(1); // Ширина рамки (отступ видимой области на один пиксель с каждой стороны контейнера)
|
|
panel.SetResizable(false); // Возможность менять размеры перетаскиванием за грани и углы отключена
|
|
panel.SetName("Main container"); // Наименование
|
|
|
|
//--- Создаём данные для таблицы
|
|
//--- Объявляем и заполняем массив заголовков столбцов с размерностью 4
|
|
string captions[4]={"Column 0","Column 1","Column 2","Column 3"};
|
|
|
|
//--- Объявляем и заполняем массив данных с размерностью 10x4
|
|
//--- Тип массива может быть double, long, datetime, color, string
|
|
long array[10][4]={{ 1, 2, 3, 4},
|
|
{ 5, 6, 7, 8},
|
|
{ 9, 10, 11, 12},
|
|
{13, 14, 15, 16},
|
|
{17, 18, 19, 20},
|
|
{21, 22, 23, 24},
|
|
{25, 26, 27, 28},
|
|
{29, 30, 31, 32},
|
|
{33, 34, 35, 36},
|
|
{37, 38, 39, 40}};
|
|
//--- Создаём объект таблицы из вышесозданного long-массива array 10x4 и string-массива заголовков столбцов (компонент Model)
|
|
table=new CTable(array,captions);
|
|
if(table==NULL)
|
|
return INIT_FAILED;
|
|
PrintFormat("The [%s] has been successfully created:",table.Description());
|
|
|
|
//--- На панели создаём новый элемент - таблицу (компонент View)
|
|
CTableView *table_view=panel.InsertNewElement(ELEMENT_TYPE_TABLE,"","TableView",4,4,panel.Width()-8,panel.Height()-8);
|
|
//--- Графическому элементу "Таблица" (View) назначаем объект таблицы (Model)
|
|
table_view.TableObjectAssign(table);
|
|
//--- Распечатаем в журнале модель таблицы
|
|
table_view.TablePrint();
|
|
|
|
//--- Нарисуем таблицу вместе с панелью
|
|
panel.Draw(true);
|
|
|
|
//--- Успешно
|
|
return(INIT_SUCCEEDED);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Custom deindicator initialization function |
|
|
//+------------------------------------------------------------------+
|
|
void OnDeinit(const int reason)
|
|
{
|
|
//--- Удаляем элемент Панель и уничтожаем таблицу и менеджер общих ресурсов библиотеки
|
|
delete panel;
|
|
delete table;
|
|
CCommonManager::DestroyInstance();
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Custom indicator iteration function |
|
|
//+------------------------------------------------------------------+
|
|
int OnCalculate(const int rates_total,
|
|
const int prev_calculated,
|
|
const datetime &time[],
|
|
const double &open[],
|
|
const double &high[],
|
|
const double &low[],
|
|
const double &close[],
|
|
const long &tick_volume[],
|
|
const long &volume[],
|
|
const int &spread[])
|
|
{
|
|
//---
|
|
|
|
//--- return value of prev_calculated for next call
|
|
return(rates_total);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| ChartEvent function |
|
|
//+------------------------------------------------------------------+
|
|
void OnChartEvent(const int id,
|
|
const long &lparam,
|
|
const double &dparam,
|
|
const string &sparam)
|
|
{
|
|
//--- Вызываем обработчик OnChartEvent элемента Панель
|
|
panel.OnChartEvent(id,lparam,dparam,sparam);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Таймер |
|
|
//+------------------------------------------------------------------+
|
|
void OnTimer(void)
|
|
{
|
|
//--- Вызываем обработчик OnTimer элемента Панель
|
|
panel.OnTimer();
|
|
}
|
|
//+------------------------------------------------------------------+
|