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

#ifndef PredefineProjectFormUnitH
#define PredefineProjectFormUnitH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "GeneralDialogPanel.h"
#include <Vcl.ExtCtrls.hpp>
#include "SkinTrackBar.h"
#include "LineEdit.h"
#include "ComboBoxComponent.h"
#include "GlobalUnit.h"
#include "TextButton.h"
#include "UpDownUnit.h"
#include "PredefineProjectSetUnit.h"
#include <Vcl.ComCtrls.hpp>
//---------------------------------------------------------------------------
class TPredefineProjectForm : public TForm
{
__published:	// IDE-managed Components
	TGeneralDialogPanel *GeneralDialogPanel;
	TLabel *mTsLabel;
	TLabel *mTempoLabel;
	TLabel *mKeyLabel;
	TLabel *mStageLabel;
	TLabel *mKeyTypeLabel;
	TLabel *Label1;
	TLabel *Label2;
	TLineEdit *mTempoLineEdit;
	TTextButton *mCancelButton;
	TTextButton *mOkButton;
	TPaintBox *mChordsBox;
	TComboBoxComponent *mKeyComboBox;
	TComboBoxComponent *mKeyTypeComboBox;
	TComboBoxComponent *mStageComboBox;
	TComboBoxComponent *mTSComboBox;
	TComboBoxComponent *mTempoComboBox;
	TComboBoxComponent *mStageSetComboBox;
	UpDownUnit::TUpDown *mTempoUpDown;

	void __fastcall DoShowPreChordPaint(TObject *Sender);
	void __fastcall FormCreate(TObject *Sender);
	void __fastcall DoKeyChange(TComboBoxItem *Sender, int Index);
	void __fastcall DoKeyTypeChange(TComboBoxItem *Sender, int Index);
	void __fastcall StageSetChange(TComboBoxItem *Sender, int Index);
	void __fastcall DoStageCountChange(TComboBoxItem *Sender, int Index);
	void __fastcall DoPaintBoxMouseEnter(TObject *Sender);
	void __fastcall DoPaintBoxMouseLeave(TObject *Sender);
	void __fastcall DoPaintBoxMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y);
	void __fastcall DoTsChange(TComboBoxItem *Sender, int Index);
	void __fastcall DoTempoComboChange(TComboBoxItem *Sender, int Index);
	void __fastcall DoTempoEditChange(TObject *Sender);
	void __fastcall mTempoUpDownClick(TObject *Sender, TUDBtnType Button);
	void __fastcall DoGeneraDialogPanelMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
	void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
private:	// User declarations
	TRect mChordRect[8];

	TPrefineProjectSet *mTest;

	TColor mPaintBoxFocColor;
	TColor mPaintBoxDefColor;

	int mLordSong;	// Ö÷¸è
	int mRefrain;	// ¸±¸è
	int mBridge;	// ÇÅ

	bool mPaintBoxFlag;
	bool mPresetMouseOver;
	bool mIsPreSetShow;

	void __fastcall InitUI();
	void __fastcall InitVariable();

	void DrawChord(TCanvas *Canvas, TRect Rect, int iKey, int iType);

	void __fastcall DoPresetChordShow(TObject *Sender);
	void __fastcall DoPresetChordHide(TObject *Sender);

public:		// User declarations
	int m_Ts;
	int m_Tempo;
	int m_Key;
	int m_KeyType;
	int m_RavStage;
	int m_Preset[3];

	__fastcall TPredefineProjectForm(TComponent* Owner);
	__fastcall ~TPredefineProjectForm();

	virtual int __fastcall ShowModal();
};
//---------------------------------------------------------------------------
extern PACKAGE TPredefineProjectForm *PredefineProjectForm;
extern const BYTE u_arrPredefChords[3][2][8][8];
//---------------------------------------------------------------------------
#endif
