//---------------------------------------------------------------------------

#pragma hdrstop

#include "StyleSelPanel.h"
#include "GlobalUnit.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)

#define MAX_WIDTH	400
#define MIN_WIDTH	200

#define FRAME_TOP	20
#define FRAME_LEFT	14
#define FRAME_BOTTOM 12

#define SEL_LINE	40	//分页符的线条
#define SEL_HEIGH	15
#define SEL_RIGHT	20

#define BTN_TOP		5
#define BTN_LEFT	0
#define BTN_WIDTH	70
#define BTN_HEIGHT	16

#define MAX_EDIT_W	250
__fastcall SearchItem::SearchItem( System::Classes::TComponent* AOwner )
		: TCKBox(AOwner)
{
	count = 0;
}
__fastcall SearchItem::~SearchItem(void)
{

}

__fastcall TStyleSelPanel::TStyleSelPanel(System::Classes::TComponent* AOwner)
: Vcl::Extctrls::TPanel(AOwner)
{
	Color = RGB(47,50,57);
	m_ListStyle = new TList();
	m_ListInstrBtn = new TList();

	//添加风格
	AddStyleButton("流行",0);
	AddStyleButton("民谣",1);
	AddStyleButton("摇滚",2);
	AddStyleButton("舞曲",3);
	AddStyleButton("爵士",4);
	AddStyleButton("蓝调",5);
	AddStyleButton("桑巴",6);
	AddStyleButton("古典",7);
	AddStyleButton("圆舞曲",8);
	AddStyleButton("其他",-2);   //修改为	>9
	AddStyleButton("全选",-3,false);
	AddStyleButton("全不选",-3,false);

	//添加乐器
	AddInstrButton("钢琴",2,0,1);
	AddInstrButton("电钢琴",4,2,3,4,5);
	AddInstrButton("风琴",8,16,17,18,19,20,21,22,23);
	AddInstrButton("木吉他",2,24,25);
	AddInstrButton("电吉他",3,25,26,27);
	AddInstrButton("失真吉他",2,29,30);
	AddInstrButton("小提琴",1,40);
	AddInstrButton("竖琴",1,46);
	AddInstrButton("弦乐",4,48,49,50,51);
	AddInstrButton("小号",1,56);
	AddInstrButton("铜管",3,61,62,63);
	AddInstrButton("萨克斯",4,64,65,66,67);
	AddInstrButton("长笛",1,73);
	AddInstrButton("合成主音",8,80,81,82,83,84,85,86,87);
	AddInstrButton("合成背景",8,88,89,90,91,92,93,94,95);

    	//排序选项
	for( int i=0; i<2; i++ ){
		m_lblSort[i] = new TLabel(this);
		m_lblSort[i]->Visible = false;
		m_lblSort[i]->Parent = this;
		m_lblSort[i]->ControlStyle>>csOpaque;
		m_lblSort[i]->Layout = tlCenter;
		m_lblSort[i]->Font->Name = g_strTxtFontName;

		m_lblSort[i]->Font->Size = g_szFont9;
		m_lblSort[i]->Font->Color = RGB( 156, 170, 189 );
		m_lblSort[i]->Height = BTN_HEIGHT;
		m_lblSort[i]->Width = 30;

		m_cbSort[i] = new TComboBoxComponent(NULL);
		m_cbSort[i]->Visible = false;
		m_cbSort[i]->Parent = this;
		m_cbSort[i]->Width = 60;
		m_cbSort[i]->Height = BTN_HEIGHT;
		m_cbSort[i]->SetFont(g_strTxtFontName, g_szFont9);
		m_cbSort[i]->OnChange = SortChanged;
	}

	m_lblSort[0]->Caption = "比较：";
	m_cbSort[0]->AddItem("序号");
	m_cbSort[0]->AddItem("价格");
	m_cbSort[0]->AddItem("评分");
	m_cbSort[0]->AddItem("速度");

	m_lblSort[1]->Caption = "排列：";
	m_cbSort[1]->AddItem("递减");
	m_cbSort[1]->AddItem("递增");

	m_LineEit = new TLineEdit(this);
	m_LineEit->Visible = false;
	m_LineEit->Parent = this;
	m_LineEit->Color =RGB( 58,63,69 );
	m_LineEit->Font->Name = g_strTxtFontName;
	m_LineEit->Font->Size = g_szFont9;
	m_LineEit->Font->Color = RGB( 161,170,179 );
	m_LineEit->HintColor = RGB(161,170,179);
	m_LineEit->HintText = "(查找)";

	OnMouseMove = CMMouseMove;
	OnMouseDown = CMMouseDown;

	iSelect = SORT;
	iMouse = -1;
	oldX = 0;
	oldY = 0;
	oldAddLeft = 0;

	iSortType = 0;
	iSortMode = 1;

	m_img = new TPngImage();
	m_img->LoadFromResourceName(int(HInstance), L"imgPylon");
}

__fastcall TStyleSelPanel::~TStyleSelPanel(void)
{
	for( int i=0; i<m_ListStyle->Count; i++ )
		delete (SearchItem*)m_ListStyle->Items[i];
	m_ListStyle->Clear();
	delete  m_ListStyle;
	m_ListStyle = NULL;

	for( int i=0; i<m_ListInstrBtn->Count; i++ )
		delete (SearchItem*)m_ListInstrBtn->Items[i];
	m_ListInstrBtn->Clear();
	delete m_ListStyle;
	m_ListStyle = NULL;

	if(m_LineEit){
		delete m_LineEit;
    	m_LineEit = NULL;
	}

	for( int i=0; i<2; i++ ){
		delete m_lblSort[i];
		m_lblSort[i] = NULL;
		delete m_cbSort[i];
		m_cbSort[i] = NULL;
	}

	if(m_img){
		delete  m_img;
		m_img = NULL;
	}
}

void __fastcall TStyleSelPanel::CreateWnd(void)
{
	Vcl::Extctrls::TPanel::CreateWnd();

	Canvas->Font->Name = g_strTxtFontName;
	Canvas->Font->Quality = TFontQuality::fqClearTypeNatural;
	Canvas->Font->Size = g_szFont9;
}

void __fastcall TStyleSelPanel::WMEraseBkgnd(TWMEraseBkgnd &Message)
{

	TRect rect = GetClientRect();

	TCanvas* tempCanvas = new TCanvas;
	tempCanvas->Handle = Message.DC;

	tempCanvas->Brush->Color = RGB(58,63,69);             //外背景
	tempCanvas->FillRect(rect);

	tempCanvas->Brush->Color = RGB(47,50,57);             //内背景
	tempCanvas->FillRect(framRet);

	//上边线
	tempCanvas->Pen->Color = RGB(47,50,57);
	tempCanvas->MoveTo(rect.Left, rect.Top);
	tempCanvas->LineTo(rect.Right,rect.Top);

	tempCanvas->Pen->Color = RGB(30,31,36);             //线条
	tempCanvas->MoveTo(framRet.Left,framRet.Top);         //左
	tempCanvas->LineTo(framRet.Left,framRet.Bottom);
	tempCanvas->MoveTo(framRet.Left,framRet.Bottom);      //下
	tempCanvas->LineTo(framRet.Right,framRet.Bottom);
	tempCanvas->MoveTo(framRet.Right,framRet.Bottom);     //右
	tempCanvas->LineTo(framRet.Right,framRet.Top);

	tempCanvas->MoveTo(framRet.Left,framRet.Top);         //上
	tempCanvas->LineTo(framRet.Right -SEL_RIGHT - 2*SEL_LINE +5,framRet.Top );
	tempCanvas->MoveTo(framRet.Right -SEL_RIGHT,framRet.Top);
	tempCanvas->LineTo(framRet.Right,framRet.Top);

	tempCanvas->MoveTo( 0,Height -1 );
	tempCanvas->LineTo( Width,Height -1 );

	delete tempCanvas;
	tempCanvas = NULL;

}


void __fastcall TStyleSelPanel::Paint(void)
{
	for( int i=0; i<3; i++ ){
		if( iSelect!=i )
			DrawTab( i );
	}
	DrawTab( iSelect );
}

void TStyleSelPanel::DrawTab( int index )
{
	TPoint *P = new TPoint[4];
	String strText;
	int l;

	if( index==INSTR ){
		strText = L"乐器";
		P[0].X = framRet.Right - SEL_RIGHT -2*SEL_LINE +5;
		P[0].Y = framRet.Top;
		P[1].X = framRet.Right - SEL_RIGHT - SEL_LINE + 5;
		P[1].Y = framRet.Top;
		P[2].X = framRet.Right - SEL_RIGHT - SEL_LINE;
		P[2].Y = framRet.Top - SEL_HEIGH;
		P[3].X = framRet.Right - SEL_RIGHT - 2*SEL_LINE + 10;
		P[3].Y = framRet.Top - SEL_HEIGH;
		l = framRet.Right - SEL_RIGHT -2*SEL_LINE+5;
	}
	else if( index==STYLE ){
		strText = L"分类";
		P[0].X = framRet.Right - SEL_RIGHT -3*SEL_LINE +10;
		P[0].Y = framRet.Top;
		P[1].X = framRet.Right - SEL_RIGHT - 2*SEL_LINE + 10;
		P[1].Y = framRet.Top;
		P[2].X = framRet.Right - SEL_RIGHT - 2*SEL_LINE + 5;
		P[2].Y = framRet.Top - SEL_HEIGH;
		P[3].X = framRet.Right - SEL_RIGHT -3*SEL_LINE +15;
		P[3].Y = framRet.Top - SEL_HEIGH;
		l = framRet.Right - SEL_RIGHT -3*SEL_LINE+10;

	}
	else{
		strText = L"排序";
		P[0].X = framRet.Right - SEL_RIGHT -SEL_LINE;
		P[0].Y = framRet.Top;
		P[1].X = framRet.Right - SEL_RIGHT;
		P[1].Y = framRet.Top;
		P[2].X = framRet.Right - SEL_RIGHT -5;
		P[2].Y = framRet.Top - SEL_HEIGH;
		P[3].X = framRet.Right - SEL_RIGHT -SEL_LINE +5;
		P[3].Y = framRet.Top - SEL_HEIGH;
		l = framRet.Right - SEL_RIGHT -SEL_LINE;
	}

	Canvas->Pen->Color = iSelect==index ? RGB(47,50,57) : RGB(30,31,36);
	Canvas->Brush->Color = iSelect==index ? RGB(47,50,57) : RGB(58,63,69);
	Canvas->Polygon(P,3);
	Canvas->Draw( l, framRet.Top - SEL_HEIGH ,m_img );

	Canvas->Font->Color = iMouse==index ? RGB(145,164,170) : RGB(120,126,148);
//	Canvas->Font->Size = g_szFont8;
	Canvas->TextOutW( P[3].X+4, P[3].Y+2, strText );

	delete[] P;
}

void __fastcall TStyleSelPanel::CMMouseMove(System::TObject* Sender,
			System::Classes::TShiftState Shift, int X, int Y)
{
	TRect rct;
	rct.init(framRet.Right-3*SEL_LINE-SEL_RIGHT+10,framRet.Top-SEL_HEIGH,
			 framRet.Right-SEL_RIGHT,framRet.Top+2);

	if( iSelect!=STYLE && X>framRet.Right-SEL_RIGHT-3*SEL_LINE+10 && X<framRet.Right-SEL_RIGHT-2*SEL_LINE + 5
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH )
	{
		if(iMouse != STYLE){
			iMouse = STYLE;
			InvalidateRect(Handle,&rct,true);
		}
	}

	else if( iSelect!=INSTR && X>framRet.Right-SEL_RIGHT-2*SEL_LINE+5 && X<framRet.Right-SEL_RIGHT-SEL_LINE
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH )
	{
		if(iMouse!=INSTR){
			iMouse = INSTR;

			InvalidateRect(Handle,&rct,true);
		}
	}

	else if( iSelect!=SORT && X>framRet.Right-SEL_LINE-SEL_RIGHT+5 && X<framRet.Right-SEL_RIGHT
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH )
	{
		if( iMouse != SORT ){
			iMouse = SORT;
			InvalidateRect(Handle,&rct,true);
		}

	}
	else if(iMouse!=-1){
		iMouse = -1;
		InvalidateRect(Handle,&rct,true);
	}

}

void __fastcall TStyleSelPanel::CMMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button,
				 System::Classes::TShiftState Shift, int X, int Y)
{
	int iPos = -1;

	if( iSelect!=STYLE && X>framRet.Right-SEL_RIGHT-3*SEL_LINE+10 && X<framRet.Right-SEL_RIGHT-2*SEL_LINE + 5
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH )   //点击分类
	{
		iPos = STYLE;
	}
	else if( iSelect!=INSTR && X>framRet.Right-SEL_RIGHT-2*SEL_LINE+5 && X<framRet.Right-SEL_RIGHT-SEL_LINE
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH  )      //点击乐器
	{
		iPos = INSTR;

	}
	else if( iSelect!=SORT && X>framRet.Right-SEL_LINE-SEL_RIGHT+5 && X<framRet.Right-SEL_RIGHT
		&& Y<framRet.Top && Y>framRet.Top-SEL_HEIGH )
	{
		iPos = SORT;
	}

	if( iPos>=0 ){
		iSelect = iPos;
		oldX = 0;
		oldY = 0;

		int retHeight = GetHeight();
		if( Height!=retHeight ){
			Height = retHeight;
		}

		Parent->Perform( WM_SIZE, 0, MAKELONG( Parent->Width, Parent->Height ) );
		Parent->Invalidate();
	}
}

int TStyleSelPanel::GetHeight()
{
	framRet.init( FRAME_LEFT, FRAME_TOP, Width - FRAME_LEFT, Height - FRAME_BOTTOM );
	int btnWidth = Width - 2*FRAME_LEFT - BTN_LEFT;
	int retHeight = Height;

	if( iSelect == STYLE ){
		int numX = btnWidth/( BTN_LEFT + BTN_WIDTH );        //行
		int numY = ceil(m_ListStyle->Count/(double)numX );   //列
		int AddLeft =  (btnWidth - ((double)numX)*(BTN_WIDTH + BTN_LEFT))/((double)numX);

		if( oldX!=numX || oldY!=numY || oldAddLeft!=AddLeft ){
			oldX = numX;
			oldY = numY;
			oldAddLeft = AddLeft;

			for( int i=0; i<m_ListInstrBtn->Count; i++ )
				((SearchItem*)m_ListInstrBtn->Items[i])->Visible = false;

			for( int i=0; i<2; i++ ){
				m_lblSort[i]->Visible = false;
				m_cbSort[i]->Visible = false;
			}

			retHeight = numY*(BTN_TOP+BTN_HEIGHT)+FRAME_TOP+FRAME_BOTTOM + BTN_TOP;

			for( int i=0; i<numY; i++ ){
				for(int j=0; j<numX;j++){
					int m = i*numX + j;
					if( m >= m_ListStyle->Count || m<0 )
						break;

					((SearchItem*)m_ListStyle->Items[m])->Left = BTN_LEFT+framRet.Left + j*(BTN_WIDTH + BTN_LEFT + AddLeft);
					((SearchItem*)m_ListStyle->Items[m])->Top =  BTN_TOP+framRet.Top + i*(BTN_TOP + BTN_HEIGHT);

					((SearchItem*)m_ListStyle->Items[m])->Visible = true;
				}
			}
		}
	}
	else if(iSelect == INSTR){
		int numX = btnWidth/( BTN_LEFT+BTN_WIDTH );        				//行
		int numY = ceil(m_ListInstrBtn->Count/(double)numX );         	//列
		int AddLeft =  (btnWidth - ((double)numX)*(BTN_WIDTH + BTN_LEFT))/((double)numX);

		if( oldX!=numX || oldY!=numY || oldAddLeft!=AddLeft ){
			oldX = numX;
			oldY = numY;
			oldAddLeft = AddLeft;

			for( int i=0; i<m_ListStyle->Count; i++ )
				((SearchItem*)m_ListStyle->Items[i])->Visible = false;

			for( int i=0; i<2; i++ ){
				m_lblSort[i]->Visible = false;
				m_cbSort[i]->Visible = false;
			}

			retHeight = numY*(BTN_TOP+BTN_HEIGHT)+FRAME_TOP+FRAME_BOTTOM + BTN_TOP;

//			OutputDebugString(IntToStr(AddLeft).c_str());
			for( int i=0; i<numY; i++ ){
				for(int j=0; j<numX;j++){
					int m = i*numX +j;
					if( m >= m_ListInstrBtn->Count || m<0 )
						break;

					((SearchItem*)m_ListInstrBtn->Items[m])->Left = BTN_LEFT+framRet.Left + j*(BTN_LEFT + BTN_WIDTH+AddLeft);
					((SearchItem*)m_ListInstrBtn->Items[m])->Top =  BTN_TOP+framRet.Top + i*(BTN_TOP + BTN_HEIGHT);

					((SearchItem*)m_ListInstrBtn->Items[m])->Visible = true;
				}
			}
		}
	}
	else{
		for( int i=0; i<m_ListInstrBtn->Count; i++ )
				((SearchItem*)m_ListInstrBtn->Items[i])->Visible = false;

		for( int i=0; i<m_ListStyle->Count; i++ )
				((SearchItem*)m_ListStyle->Items[i])->Visible = false;

		int numX = btnWidth / ( BTN_LEFT + m_lblSort[0]->Width + m_cbSort[0]->Width + 10 ),
			numY = ceil( 2 / (double)numX );

		for( int i=0; i<numY; i++ ){
			int pos = BTN_LEFT + framRet.Left + 10;
			for(int j=0; j<numX;j++){
				int m = i*numX +j;
				if( m >= 2 || m<0 )
					break;

				m_lblSort[m]->Top = BTN_TOP+framRet.Top + i*(BTN_TOP + BTN_HEIGHT);
				m_lblSort[m]->Visible = true;
				m_lblSort[m]->Left = pos;
				m_cbSort[m]->Top = BTN_TOP+framRet.Top + i*(BTN_TOP + BTN_HEIGHT);
				m_cbSort[m]->Visible = true;
				m_cbSort[m]->Left = m_lblSort[m]->Left + m_lblSort[m]->Width;
				pos = m_cbSort[m]->Left + m_cbSort[m]->Width + 15;
			}
		}

		m_cbSort[0]->DefItemIndex = iSortType;
		m_cbSort[1]->DefItemIndex = iSortMode;

		retHeight = numY*(BTN_TOP + BTN_HEIGHT) + FRAME_TOP + FRAME_BOTTOM + BTN_TOP;
	}

	return retHeight;

/*	//LineEdit
	m_LineEit->Left = framRet.Left + 3;
	m_LineEit->Top = framRet.Top - SEL_HEIGH -3;

	if( framRet.Width()- SEL_RIGHT - 2*SEL_LINE < MAX_EDIT_W )
		m_LineEit->Width = framRet.Width()- SEL_RIGHT - 2*SEL_LINE;
	else
		m_LineEit->Width =  MAX_EDIT_W;

	m_LineEit->Height = SEL_HEIGH-2;

//	if( !m_LineEit->Visible )        //显示LineEdit
//		m_LineEit->Visible = true;
*/
}

void __fastcall TStyleSelPanel::WMSize( Winapi::Messages::TWMSize &Message )
{
	if( Message.Width>FRAME_LEFT && Message.Height>FRAME_BOTTOM ){
		framRet.init( FRAME_LEFT, FRAME_TOP,
						Message.Width - FRAME_LEFT,
						Message.Height - FRAME_BOTTOM );

		int retHeight = GetHeight();
		if( Height!=retHeight ){
			Height = retHeight;
		}
	}
	else{
        OutputDebugString( L"error." );
    }
}

void __fastcall TStyleSelPanel::CMClick(System::TObject* Sender)
{
	if( ((SearchItem*)Sender)==m_ListStyle->Items[m_ListStyle->Count-2] ){  //全选
		((SearchItem*)m_ListStyle->Items[m_ListStyle->Count-2])->Checked = false;

		for( int i=0; i<m_ListStyle->Count-2; i++ ){
			((SearchItem*)m_ListStyle->Items[i])->Checked = true;
		}
	}
	else if( ((SearchItem*)Sender)==m_ListStyle->Items[m_ListStyle->Count-1] ){  //全不选
		((SearchItem*)m_ListStyle->Items[m_ListStyle->Count-1])->Checked = false;

		for( int i=0; i<m_ListStyle->Count-2; i++ ){
			((SearchItem*)m_ListStyle->Items[i])->Checked = false;
		}
	}
	else if(iSelect==INSTR ){
		for( int i=0; i<m_ListInstrBtn->Count; i++ ){
			if( ((SearchItem*)m_ListInstrBtn->Items[i])!=((SearchItem*)Sender)&&((SearchItem*)m_ListInstrBtn->Items[i])->Checked )
				((SearchItem*)m_ListInstrBtn->Items[i])->Checked = false;
		}
	}

	if( iSelect==STYLE){
		DStyle.Length = 0;          //清空列表
		for(int i=0;i<m_ListStyle->Count-2;i++){      //去除掉全选与全不选按钮
			if( ((SearchItem*)m_ListStyle->Items[i])->Checked ){
				DStyle[DStyle.Length++] = ((SearchItem*)m_ListStyle->Items[i])->Tag;
			}
		}
	}
	else if( iSelect==INSTR ){
		DInStr.Length = 0;        //清空列表
		for( int i=0;i<m_ListInstrBtn->Count;i++ ){
			if( ((SearchItem*)m_ListInstrBtn->Items[i])->Checked ){
				for( int n= 0;n<((SearchItem*)m_ListInstrBtn->Items[i])->count;n++ ){
					DInStr[DInStr.Length++] = ((SearchItem*)m_ListInstrBtn->Items[i])->classify[n];
				}
			}
		}
	}

	PostMessage( Parent->Handle, UM_SEARCH, NULL, NULL );//msg.WParam,msg.LParam );
}


void TStyleSelPanel::AddStyleButton(String sCaption,int iTag,bool bCheck )
{
	SearchItem *m_StyleBtn = new SearchItem(this);
	m_StyleBtn->Parent = this;
	m_StyleBtn->Visible = false;
	m_StyleBtn->Width = BTN_WIDTH;
	m_StyleBtn->Height = BTN_HEIGHT;
	m_StyleBtn->BoxColor =RGB( 39,42,47 );
	m_StyleBtn->Font->Color = RGB( 145,164,170 );
	m_StyleBtn->Font->Name = g_strTxtFontName;
	m_StyleBtn->Font->Size = g_szFont9;
	m_StyleBtn->Caption = sCaption;
	m_StyleBtn->Checked = bCheck;
	m_StyleBtn->OnClick = CMClick;
	m_StyleBtn->Tag = iTag;

	m_ListStyle->Add(m_StyleBtn);
}

void TStyleSelPanel::AddInstrButton(String sCaption,int num,...)
{
	va_list parg;

	va_start(parg, num);

	SearchItem *m_InstrBtn = new SearchItem(this);
	m_InstrBtn->Parent = this;
	m_InstrBtn->Visible = false;
	m_InstrBtn->Width = BTN_WIDTH;
	m_InstrBtn->Height = BTN_HEIGHT;
	m_InstrBtn->BoxColor = RGB( 39,42,47 );//RGB( 30,31,36 );
	m_InstrBtn->Font->Color = RGB( 145,164,170 );
	m_InstrBtn->Font->Name = g_strTxtFontName;
	m_InstrBtn->Font->Size = g_szFont9;
	m_InstrBtn->Caption = sCaption;
	m_InstrBtn->OnClick = CMClick;
	m_InstrBtn->count = num;

	va_start(parg, num);
	for( int i=0;i<num;i++ ){
		int arg = va_arg(parg,int);
		m_InstrBtn->classify[i] = arg;
	}
	va_end(parg);

	m_ListInstrBtn->Add(m_InstrBtn);
}

void __fastcall TStyleSelPanel::CMMouseEnter(Winapi::Messages::TMessage &Msg)
{
	Screen->Cursor = crDefault;
}

void TStyleSelPanel::Reset(void)   //重置按钮
{
	for( int i=0;i<m_ListStyle->Count-2;i++ ){
		((SearchItem*)m_ListStyle->Items[i])->Checked = true;
	}

	DStyle.Length = 0;          //清空列表
	for(int i=0;i<m_ListStyle->Count-2;i++){      //加载所有按钮
		if( ((SearchItem*)m_ListStyle->Items[i])->Checked ){
			DStyle[DStyle.Length++] = ((SearchItem*)m_ListStyle->Items[i])->Tag;
		}
	}

	for( int i=0;i<m_ListInstrBtn->Count;i++ ){
		((SearchItem*)m_ListInstrBtn->Items[i])->Checked = false;
	}
	DInStr.Length = 0;

	int retHeight = GetHeight();
	if( Height!=retHeight ){
		Height = retHeight;
	}
}

void __fastcall TStyleSelPanel::SortChanged(TComboBoxItem *Sender, int Index)
{
	bool bChanged = false;
	if( iSortType!=m_cbSort[0]->DefItemIndex ){
		iSortType = m_cbSort[0]->DefItemIndex;
		bChanged = true;
	}
	else if(iSortMode!=m_cbSort[1]->DefItemIndex ){
		iSortMode = m_cbSort[1]->DefItemIndex;
		bChanged = true;
	}

	if( bChanged )
		PostMessage( Parent->Handle, UM_SEARCH, NULL, NULL );
}
