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

#ifndef gui_ListCaptionBarH
#define gui_ListCaptionBarH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------


#include "font.h"

#include "gui_bmpbutton.h"


class Tgui_ListCaptionBar_Form : public TForm
{
__published:	// IDE-managed Components
        void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
        void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	// User declarations
public:		// User declarations

        __fastcall Tgui_ListCaptionBar_Form(TComponent* Owner);

        //[2012.04.29.일][완료!!!]
        __fastcall ~Tgui_ListCaptionBar_Form(void);

        //[서브클래싱]
        //{
            void __fastcall WndProc(Messages::TMessage &Message);
        //}

        //[VAR]
        //{
            //[환경변수]
            //{
                //[2007.10.02.화][추가!!!]
                struct  IDE_OPTION   *_ide_option;

            //}

            //[실제 그리는 영역]{------
            Graphics::TBitmap  *_bmp_;
            //}------------------------

            //[사용글꼴]{--------------
            struct FONTPACK     _font;
            //}------------------------

            //[목록버튼] 관련 설정.
            int     _listBtnX;       //[목록버튼] 위치 X.
            int     _listBtnY;       //[목록버튼] 위치 Y.
            bool    _listBtn;        //[목록버튼] 사용 유/무(기본값 : true).
            bool    _listBtnBorder;  //[목록버튼] 테두리 유/무(기본값 : true).

            //caption 을 출력할 버튼상의 위치.
            int     _captionX;   //문자열 출력 위치 X.
            int     _captionY;   //문자열 출력 위치 Y.

            //버튼 문자열(한글 50 자면 충분할듯).
            char    _caption[100];

            //오른쪽 위 모서리를 만들것인가?(기본값 : true)
            bool    _edge;

            //테두리 사용 유/무.(기본값 : true)
            bool    _border;

            //가장 아래 테두리를 그릴것인가?(기본값 : true)
            bool    _borderBottom;

            //문자 형식(기본/굵은).(기본값 : 기본)
            int     _fontStyle;

            //[색설정]
            //{
                int    _colorListBtnBorder;  //버튼 테두리 색.
                int    _colorListBtnFront;   //버튼 그림 색.
                int    _colorListBtnBack;    //버튼 바탕색.

                int    _colorFont;           //문자색.
                int    _colorBack;           //배경색.
                int    _colorBorder;         //테두리 색.
                int    _colorEdge;           //모서리 배경색.

            //}

            //버튼이 눌린 상태라면 true.
            bool    _down;

            //마우스포인터가 안에 있는 경우는 true.
            //이는 OnClick [동작함수] 를 만들기 위하여 필요하다.
            //(BASE : false)
            bool    _in;

            //눌린 버튼의 종류를 기록한다.
            int     _mouse_button;
            //{
                #define  d_mouse_null    0
                #define  d_mouse_left    1
                #define  d_mouse_right   2
                #define  d_mouse_middle  3

            //}

            //[내부 컨트롤]
            //{
                //[2007.12.22.토][]추가!!!

                //[목록 포인터]
                //{
                    //----------------------------------------------------
                    //[목록버튼] 에 연결할 <gui_List> 의 포인터를 갖는다.





                    //----------------------------------------------------
                //}

                //[목록버튼]
                Tgui_bmpbutton_Form  *_list_BmpBtn;

                void __fastcall _EVENT_ListBmpBtn_Click(void);

            //}

        //}

        //[EVENT 함수]
        //{
            //[주의!!!]{------------------------------------------------------------------------
            //__closure 는 BCB 에만 있는 것이나 멤버함수 함수포인터를 사용하기 위하여 사용한다.
            //}---------------------------------------------------------------------------------

            //버튼의 동작에 따른 처리 함수 포인터를 설정한다.
            void __fastcall (__closure * _EVENT_Down)(void);
            void __fastcall (__closure * _EVENT_Up)(void);
            void __fastcall (__closure * _EVENT_Click)(void);

            void __fastcall (__closure * _EVENT_MouseEnter)(void);
            void __fastcall (__closure * _EVENT_MouseLeave)(void);

        //}

        //[FUNCTION]
        //{
            //[2007.12.22.토][완료!!!]
            void __fastcall _Shape(void);

            //[속성]
            //{
                //[2006.11.06.월][완료!!!]
                void __fastcall _Left(int  pLEFT);
                void __fastcall _Top(int  pTOP);

                //[2007.12.21.금][완료!!!]
                void __fastcall _Width(int  pWIDTH);
                void __fastcall _Height(int  pHEIGHT);

                //[2007.12.21.금][완료!!!]
                void __fastcall _Caption(char  *pCAPTION);
                void __fastcall _CaptionX(int  pCAPTIONx);
                void __fastcall _CaptionY(int  pCAPTIONy);

                //[2007.12.20.목][완료!!!]
                void __fastcall _ColorBorder(int   pColorBorder);
                void __fastcall _ColorBack(int   pColorBack);
                void __fastcall _ColorFont(int   pColorFont);
                void __fastcall _FontStyle(int   pFontStyle);
                void __fastcall _Border(bool  pBorder);

                //[2007.12.22.토][완료!!!]
                void __fastcall _ListBtnX(int   pListBtnX);
                void __fastcall _ListBtnY(int   pListBtnY);
                void __fastcall _ListBtn(bool  pListBtn);
                void __fastcall _ListBtnBorder(bool  pListBtnBorder);
                void __fastcall _Edge(bool  pEdge);
                void __fastcall _BorderBottom(bool  pBorderBottom);

                void __fastcall _ColorListBtnBorder(int   pColorListBtnBorder);
                void __fastcall _ColorListBtnFront(int   pColorListBtnFront);
                void __fastcall _ColorListBtnBack(int   pColorListBtnBack);
                void __fastcall _ColorEdge(int   pColorEdge);

            //}

            //[2006.11.06.월][생성!!!]
            void __fastcall _Draw(void);

        //}


};
//---------------------------------------------------------------------------
extern PACKAGE Tgui_ListCaptionBar_Form *gui_ListCaptionBar_Form;
//---------------------------------------------------------------------------
#endif
