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

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

class Tgui_check_button_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);
        void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
private:	// User declarations
public:		// User declarations

        __fastcall Tgui_check_button_Form(TComponent* Owner);

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

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

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

            //}

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

            //표시할 이미지를 담고 있는 bitmap.
            Graphics::TBitmap  *_bitmap_;

            //테두리 사용 유/무.(기본값 : false)
            bool                _border;
            
            //버튼이 눌린 경우 true.(기본값 : false)
            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
            //}

            int                 _image_x;
            int                 _image_y;
            //그림이 보여지는 영역의 크기를 갖는다.(그림 자체의 크기가 아니다.)
            int                 _image_width;
            int                 _image_height;

            //[index 적용여부]
            //{
                //--------------------------------------------------
                bool                _index_bitmap;
                int                 _index_width;
                int                 _index;
                //높이는 _bitmap_ 의 높이와 같은 것으로 본다.
                //index 로 접근하는데는 _index_width 값만 필요하다.
                //--------------------------------------------------
            //}

            //[check 유/무]
            //{
                //[2007.09.29.금][추가]
                //check 상태를 알기 위한것이다.(기본 : false)
                bool  _checked;


            //}

            //[활성화 유/무]
            //{
                //[2010.07.06.화][추가!!!]
                bool   _enable;

            //}

            //[2008.02.03.일][추가!!!]{-----------------------------------------
            //[풍선도움말] 에 출력할 문자열을 가진다.
            //단, 메모리 낭비를 막기 위하여 해당 사용이 설정된 경우만 처리한다.
            bool   _balloonHelpUse; //(기본 : false)

            //동적 생성시 크기를 주어 설정한다.
            char  *_balloonHelpStr;
            //}-----------------------------------------------------------------

        //}

        //[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]
        //{
            //[2008.02.03.일][완료!!!]{--------------------
            void __fastcall _BalloonHelpUse(bool    pUse);
            void __fastcall _BalloonHelpStr(char   *pStr);
            //}--------------------------------------------

            //[2010.07.06.화][생성!!!]
            void __fastcall _Shape(void);

            //[속성]
            //{
                //[2006.11.12.일][생성!!!]
                void __fastcall _Border(bool  pBORDER);
                void __fastcall _Bitmap(AnsiString  pBITMAPname);

                void __fastcall _Left(int  pLEFT);
                void __fastcall _Top(int  pTOP);
                void __fastcall _Width(int  pWIDTH);
                void __fastcall _Height(int  pHEIGHT);

                void __fastcall _IndexBitmap(bool  pINDEXBITMAP);
                void __fastcall _IndexWidth(int  pINDEXWIDTH);
                void __fastcall _Index(int  pINDEX);

                void __fastcall _Image_X(int  pIMAGEx);
                void __fastcall _Image_Y(int  pIMAGEy);
                void __fastcall _Image_Width(int  pIMAGEwidth);
                void __fastcall _Image_Height(int  pIMAGEheight);

                void __fastcall _Checked(bool pChecked);

                //[2010.07.06.화][완료!!!]
                void __fastcall _Enable(bool  pEnable);

            //}

            //[2006.11.09.목][완료!!!]
            void __fastcall _Draw(void);
        //}

};
//---------------------------------------------------------------------------
extern PACKAGE Tgui_check_button_Form *gui_check_button_Form;
//---------------------------------------------------------------------------
#endif
