Tabsheet


Табы реализуются не просто, а очень просто........

, каждый таб рисуется в конструкторе на своём слое, а потом переключателем табов в иде кнопок происходит активация соответствующего слоя.

 Базовый класс конструктор табов:

/// @description TabSheets
//Site:   MidaDev.ru
//Author: Dimusikus

function GUI_TabSheet() : GUIElement() constructor 
{	
	#region Constructor
	my_name_is	= other.my_name_is;	
	text		= other.text_button;
	lay_id		= layer_get_id(other.layer_name);
	//acti
	GUI_Elements.add_element(my_name_is, _id);
	
	GUI_Elements.tabsheets_add_group(other.group);
	GUI_Elements.tabsheets_add_tab(other.group, self)
	#endregion	
	//*******************************************************************	
	static set_visible = function(_v)
	{
		layer_set_visible(lay_id, _v);
		if _v then instance_activate_layer(lay_id);
		else instance_deactivate_layer(lay_id)
		
	}
	//*******************************************************************
	static message = function(_aidi)
	{
		if _aidi == _id then set_visible(true);
		else set_visible(false);
	}
	//*******************************************************************	
	static listen = function() 
	{ 
		if mouse_released then
		{	mouse_clear(mb_any);  
			trace("полноценное нажатиэ");
			GUI_Elements.tabsheets_set_me(other.group, _id);
			
			EVENTGUI.publish(my_name_is, true);
			//if callback!=pointer_null then callback();
			GUI_Elements.element_callback(my_name_is);
		};		
	}
	//*******************************************************************
	static draw = function() 
	{	
		//draw_focus();		
		//draw_rectangle(_xo, _yo, _xo + width, _yo + height, true);
		draw_set_color(color_backgr_button);
		
		//draw_button(_xo, _yo, _xo + width, _yo + height, !mouse_grab);
		var _spr = layer_get_visible(lay_id) == true ? spr_TabSheet_active : spr_TabSheet_inactive;		
		draw_sprite_stretched(_spr, 0, _xo, _yo, width, height);
		
		draw_set_hv();
		draw_set_color(color_text);
		draw_set_font(font)
		draw_text(x , y , text);
	}	
	//*******************************************************************
	//инициализируем значение
	set_visible(other.active);	
	//*******************************************************************
}

 В глобальном классе GUI_Elements реализуется взаимодействие всех табов между собой(активация выбранного, деактивация остальных из этой группы табов)

 Каждый Таб имеет свойства объекта:

 

 Где прописывается принадлежность таба к группе, и принадлежность его е слою на котором он находится в конструкторе рума.