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

#ifndef gui_scroll_vH
#define gui_scroll_vH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class Tgui_scroll_v_Form : public TForm
{
__published:	// IDE-managed Components
        TTimer *scroll_Timer;
        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);
        void __fastcall scroll_TimerTimer(TObject *Sender);
private:	// User declarations
public:		// User declarations

        __fastcall Tgui_scroll_v_Form(TComponent* Owner);

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

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

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

            //}

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

            POINT               _mouse_down_point;
            int                 _mouse_down_move_size;

            //[환경변수]
            //{
                int     _thumb_size;
                //thumb 영역 값.
                TRect   _thumb_rect;
                //thumb 가 선택된 경우 true 가 된다.
                bool    _thumb_selected;

                int     _scroll_size;
                int     _move_size;

                int     _body_size;
                TRect   _body_rect;

                //위화살표가 눌린 상태라면 true.
                bool    _arrow_up_downed;
                //아래화살표가 눌린 상태라면 true.
                bool    _arrow_down_downed;
            //}

            //[property]
            //{
                int     _design_size;
                int     _max;
                int     _min;
                int     _position;
            //}
        //}

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

            void __fastcall (__closure * _EVENT_Scroll)(void);
            //{
                //[2009.11.28.토][중요추가!!!]{-----------------------------------------------
                //해당 [동작함수] 의 재귀호출을 막기 위하여 동작표시자를 만든다.
                //줄이동자는 빈번하게 사용되고 계속 호출될수 있으므로 중복실행으로 인한
                //문제가 발생한다.
                //서보를 줄이동자로 동작 시키는 경우는 통신이 중복되어 오류가 발생하는경우가
                //많으므로 이를 막기 위하여 아예 [동작함수] 가 [중복호출] 되는 것을 막아준다.
                //}---------------------------------------------------------------------------

                bool  _EVENT_Scroll_Running;

            //}

            void __fastcall (__closure * _EVENT_MouseDown)(void);

        //}

        //[FUNCTION]
        //{
            //[속성]
            //{
                void __fastcall _Top(int  pTOP);
                void __fastcall _Left(int  pLEFT);
                void __fastcall _Width(int  pWIDTH);
                void __fastcall _Height(int  pHEIGHT);

                void __fastcall _DesignSize(int  pDESIGNsize);
                void __fastcall _Max(int  pMAX);
                void __fastcall _Min(int  pMIN);
                void __fastcall _Position(int  pPOSITION);

            //}

            //[2006.10.26.목][완료!!!]
            void __fastcall _Shape_Up_Arrow(bool  pDOWN);
            //[2006.10.26.목][완료!!!]
            void __fastcall _Shape_Down_Arrow(bool  pDOWN);

            void __fastcall _Shape_Body(void);

            void __fastcall _Shape_Thumb(void);

            //[2006.10.26.목][완료!!!]
            void __fastcall _Shape(void);

            void __fastcall _Draw(void);

        //}




};
//---------------------------------------------------------------------------
extern PACKAGE Tgui_scroll_v_Form *gui_scroll_v_Form;
//---------------------------------------------------------------------------
#endif
