//+------------------------------------------------------------------+
//|                                                         info.mq4 |
//|                                      Copyright © 2006, komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, komposter"
#property link      "mailto:komposterius@mail.ru"

color lastusedColor = Black;
double lastusedFontSize = 9.0;
string lastusedFont = "Arial";

/////////////////////////////////////////////////////////////////////////////////
// void info_init()
//
// Создание объектов для вывода информации на экран
/////////////////////////////////////////////////////////////////////////////////
void info_init()
{
	for ( int row = 0; row <= 4; row ++ )
	{
		_LabelCreate( StringConcatenate( "InfoLabel_0", row ),   4, 15 + 15*row );
		_LabelCreate( StringConcatenate( "InfoLabel_1", row ), 270, 15 + 15*row );
	}
}

/////////////////////////////////////////////////////////////////////////////////
// void _LabelCreate ( string _Name, int _XDistance, int _YDistance, int _Corner = 0 )
//
// Создание объекта "Текстовая метка" с именем _Name.
// Координаты: х = _XDistance, у = _YDistance, угол = _Corner.
/////////////////////////////////////////////////////////////////////////////////
void _LabelCreate ( string _Name, int _XDistance, int _YDistance, int _Corner = 0 )
{
	int _GetLastError;

	if ( !ObjectCreate( _Name, OBJ_LABEL, 0, 0, 0 ) )
	{
		_GetLastError = GetLastError();
		if ( _GetLastError != 4200 )
		{
			Print( "ObjectCreate( \"", _Name, "\", OBJ_LABEL,0,0,0 ) - Error #", _GetLastError );
			return(-1);
		}
	}
	if ( !ObjectSet( _Name, OBJPROP_CORNER, _Corner ) )
	{
		_GetLastError = GetLastError();
		Print( "ObjectSet( \"", _Name, "\", OBJPROP_CORNER, ", _Corner, 
													" ) - Error #", _GetLastError );
	}
	if ( !ObjectSet( _Name, OBJPROP_XDISTANCE, _XDistance ) )
	{
		_GetLastError = GetLastError();
		Print( "ObjectSet( \"", _Name, "\", OBJPROP_XDISTANCE, ", _XDistance, 
															" ) - Error #", _GetLastError );
	}
	if ( !ObjectSet( _Name, OBJPROP_YDISTANCE, _YDistance ) )
	{
		_GetLastError = GetLastError();
		Print( "ObjectSet( \"", _Name, "\", OBJPROP_YDISTANCE, ", _YDistance, 
															" ) - Error #", _GetLastError );
	}
	if ( !ObjectSetText ( _Name, "", 10 ) )
	{
		_GetLastError = GetLastError();
		Print( "ObjectSetText( \"", _Name, "\", \"\", 10 ) - Error #", _GetLastError );
	}
}

/////////////////////////////////////////////////////////////////////////////////
// void info_deinit()
//
// Удаление объектов, созданных функцией info_init()
/////////////////////////////////////////////////////////////////////////////////
void info_deinit()
{
	int _GetLastError;
	for ( int row = 0; row <= 4; row ++ )
	{
		if ( !ObjectDelete( StringConcatenate( "InfoLabel_0", row ) ) )
		{
			_GetLastError = GetLastError();
			Print( "ObjectDelete( \"", StringConcatenate( "InfoLabel_0", row ), 
															"\" ) - Error #", _GetLastError );
		}
		if ( !ObjectDelete( StringConcatenate( "InfoLabel_1", row ) ) )
		{
			_GetLastError = GetLastError();
			Print( "ObjectDelete( \"", StringConcatenate( "InfoLabel_1", row ), 
															"\" ) - Error #", _GetLastError );
		}
	}
}

void info( int LabelNumber, string Text, color Color = -1, 
			  double FontSize = -1.0, string Font = "-1" )
{
	//---- определяем имя объекта
	string LabelName;
	if ( LabelNumber < 10 )
		LabelName = StringConcatenate( "InfoLabel_0", LabelNumber );
	else
		LabelName = StringConcatenate( "InfoLabel_" , LabelNumber );

	//---- если значения дополнительных параметров не задавались, 
	//---- устанавливаем последние используемые значения
	if ( Color < 0 ) Color = lastusedColor;
	if ( FontSize < 0 ) FontSize = lastusedFontSize;
	if ( Font == "-1" ) Font = lastusedFont;

	//---- запоминаем последние используемые значения
	lastusedColor = Color;
	lastusedFontSize = FontSize;
	lastusedFont = Font;

	//---- отображаем новый текст
	if ( !ObjectSetText( LabelName, Text, FontSize, Font, Color ) )
	{
		int _GetLastError = GetLastError();
		Print( "ObjectSetText( \"", LabelName,"\", \"", Text, "\", ", FontSize, ", ", Font, 
															", ", Color, " ) - Error #", _GetLastError );
	}
	//---- перерисовываем объекты
	ObjectsRedraw();
}
void info_clear()
{
	for ( int n = 0;  n < 5;  n ++ ) info( n, "" );
	for (     n = 10; n < 15; n ++ ) info( n, "" );
}