

#include "font.h"

//[2010.01.28.목][추가!!!]
#include  "GBalloonBox.h"

//[2010.02.12.금][추가!!!]
#include  "GScrollV.h"

//[폼디자인:모드]
//[2018.06.13.수][추가!!!]
#include "GVmos.h"
#include "GCover.h"
#include <Classes.hpp>
#include <Vcl.ExtCtrls.hpp>


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




class TGList_Form : public TForm
{
__published:	// IDE-managed Components
    TTimer *mouseLeaveTimer;
        void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
    void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
    void __fastcall FormMouseWheel(TObject *Sender, TShiftState Shift,
          int WheelDelta, TPoint &MousePos, bool &Handled);
    void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
    void __fastcall FormResize(TObject *Sender);
    void __fastcall FormMouseEnter(TObject *Sender);
    void __fastcall FormMouseLeave(TObject *Sender);
    void __fastcall FormClick(TObject *Sender);
    void __fastcall FormDblClick(TObject *Sender);
    void __fastcall FormHide(TObject *Sender);
    void __fastcall FormShow(TObject *Sender);
    void __fastcall mouseLeaveTimerTimer(TObject *Sender);
private:	// User declarations
public:		// User declarations

        __fastcall TGList_Form(TComponent* Owner);

        //[2012.04.30.월][완료!!!]
        __fastcall ~TGList_Form(void);

        //[그림부품 독립구동]
        //{
            //[2018.10.13.토][추가!!!]
            void __fastcall CreateParams(TCreateParams &Params);

        //}

        //[서브클래싱]
        //{
            //[2012.05.20.일][완료!!!]
            void __fastcall WndProc(Messages::TMessage &Message);

        //}

        //[환경변수]
        //{
            //[2023.01.30.월][추가]{------
            //[Linux:wine] 지원을 위한것.
            //}---------------------------

            struct  IDE_OPTION   *_ideOption_;

        //}

        //[생성자]
        //{
            //[2012.05.01.화][중요추가!!!]{-------------------------------------------
            //<GVmos> 가 <[]맷돌가상구동> 해제로 즉시 종료되는 경우
            //일부 [그림부품] 이 동작중인 경우 [동적삭제] 된 후에도
            //함수가 실행될수 있다.
            //이를 막기 위하여 이 개체의 [존재 유/무] 를 확인할 변수를 하나 둔다.
            //
            //모든 함수는 반드시 <_this_:true> 인 경우만 처리되어야 한다.
            //
            //[생성자] 에서 반드시 <true> 로 설정하고, [소멸자] 에서 <false> 로 처리.
            //true  : 생성된 상태.
            //false : 삭제된 상태.
            //}-----------------------------------------------------------------------

            bool  _this_;

        //}

        //[사용구분]
        //{
            //[2012.05.05.토][설명!!!]{----------------------------------------------------
            //[편집기] 는 [GVmos] 상의 [공용그림부품] 이 아니므로 <_GUse> 값으로
            //BCB 용으로 사용되는지 [맷돌C:그림부품] 으로 사용되는지 쉽게 구분가능하다.
            //이 구분은 일반 [그림부품] 에는 필요없고, 내부적으로 <MsgBox> 를 사용하는
            //그림부품에서만 필요하다.
            //
            //1) <_GUse==NULL> : BCB 용.
            //
            //2) <_GUse!=NULL> : [맷돌C:그림부품] 용.
            //
            //이 구분은 <MsgBox> 때문인데 [모달/유사모달] 로 처리할지를 결정하기 위한것.
            //
            //1) 의 경우는 [모달] 로 일반 적으로 보여준다.
            //2) 의 경우는 [맷돌C:그림부품] 용으로 [유사모달] 처리된다.
            //   단, 이 경우는 [맷돌C:API] 에서 VMOS 로 구동 처리된다.
            //
            //<API:_GMsgBox_기본_()> 원본 [설계묶음] 안의 설명을 참고한다.
            //
            //[중요!!!]--------------------------------------------------------------------
            //
            //[맷돌C] 용으로 사용하는 경우는 반드시 <GXXX_Create()> 함수를 사용하므로
            //이 함수안에서만 <true> 로 설정되고, 나머지는 <false> 로 설정해야 한다.
            //단, [공용그림부품] 의 경우는 <GXXX_Create()> 를 사용하지 않고 <gui_part.cpp>
            //안에 선언돼 있는 <GPART_GMsgBox_Create()> 등으로 선언되므로 반드시 이 안에서
            //<true> 로 선언해 주어야 한다.
            //}----------------------------------------------------------------------------

            //처음에는 반드시 BCB 용으로 설정.
            bool  _GUse; //(기본값:false)

        //}

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

            //[2010.02.12.금][추가!!!]
            TGScrollV_Form     *_scrollV;

            //[마우스 버튼 종류]
            //{
                //[2022.09.18.일][추가]{---
                //눌린 버튼의 종류 기록.
                //}------------------------

                int  _mouse_button;
                //{
                    #define  d_mouse_null    0
                    #define  d_mouse_left    1
                    #define  d_mouse_right   2
                    #define  d_mouse_middle  3

                //}

            //}

            //[마우스 내부 존재 유/무]
            //{
                //[2023.01.30.월][추가]{------------------
                //마우스포인터가 안에 있는 경우는 <true>.
                //}---------------------------------------

                bool  _in; //(기본 : false)

            //}

        //}

        //----------------------------------------------------------------------
        //[생성자]--------------------------------------------------------------
        //----------------------------------------------------------------------

        //[생성자 정보]
        //{
            //[2010.02.25.목][추가!!!]{-----------------------------------------
            //실제 개체는 VMOS 상에서 <void *> 정보 한개(8 Byte)로 이 개체의
            //PC 상의 물리적 위치만 관리하므로 실제 다른 정보를 개체 자체적으로
            //직접 [속성] 으로 관리한다.
            //즉, VMOS 상에서도 개체는 하나의 포인터로만 관리된다.
            //}-----------------------------------------------------------------

            //[식별자]
            //{
                //[2010.02.25.목][추가!!!]{----------------------------------------------------
                //사용자가 지정한 [식별자] 로 모든 그림 부품은 모두 다른 값이 지정돼야 한다.
                //이 [식별자] 는 [알림문] 안에 들어 있어, 알림문이 어떤 [그림부품] 의 것인지
                //VMOS 쪽에서 이 [식별자] 확인 만으로 간단하게 구분할수 있게 하기 위한 것이다.
                //
                //[2012.07.09.월][중요수정!!!]*************************************************
                //
                //[생성자(12)] = { [절대주소(8)] + [부품고유ID(2)] + [GID(2)] }
                //
                //로 <GID> 가 추가 되었으므로 사용하지 않고 주석처리.
                //이는 [맷돌C:이벤트] 처리시 생성자] 만으로 쉽게 <GID> 를 구분처리하기 위한것.
                //unsigned short  _GID;
                //}----------------------------------------------------------------------------

            //}

            //[생성자]
            //{
                //[2010.03.10.수][추가!!!]{---------------------------------------------------
                //[생성자] 의 실제 물리위치를 관리한다.
                //이는 직접 해당 API 로 삭제되는 경우는 해당 함수에서 자동으로 [생성자가]
                //초기화 되지만, 다른 [그림부품] 에 생성된 경우, 이 [그림부품] 이 삭제될때
                //자동으로 같이 [삭제] 는 되지만, 해당 [생성자] 는 초기화 되지 않기 때문이다.
                //이를 위하여 [생성자] 를 관리하고, [파괴자] 부분에서 직접 해당 초기화 함수를
                //호출하여 반드시 [생성자] 정보를 초기화 해 주어야 한다.
                //}---------------------------------------------------------------------------

                void  *_GPart;

            //}

        //}

        //[환경변수]
        //{
            //[2018.]

        //}

        //----------------------------------------------------------------------
        //[속성]----------------------------------------------------------------
        //----------------------------------------------------------------------

        //[유/무효]
        //{
            //[2018.08.31.금][추가!!!]
            void __fastcall _Enable(bool  pEnable);

        //}

        //[글꼴]
        //{
            //[VAR]
            //{
                struct FONTPACK  _font;

                int    _fontColor;     //문자색. (BASE : 기본 문자색)
                int    _fontStyle;     //문자 형식. (BASE : d_FONTSTYLE_default)

                //[2010.02.11.목][추가!!!]
                //선택된항목의 문자색.
                int    _fontSelColor;

                //선택 항목의 문자 바탕색.
                int    _fontSelBackColor;

                //[2010.02.13.토][추가!!!]
                //[화면지정자] 로 지정된 문자에 적용할 색.
                int    _fontMouseSelColor;

                //[화면지정자] 로 지정된 행을 표시하는데 사용되는 색.
                int    _fontMouseSelBackColor;

                //[2010.02.12.금][추가!!!]
                //글꼴의 최대 높이를 갖는다.
                int    _fontMaxHeight;


                //[2010.02.13.토][추가!!!]{--------------------------------------
                //[선택 바탕색] 의 경우만 적용되며,
                //<_fontSelBackColor/_fontMouseSelBackColor> 에 적용된다.
                //[밝기조정] 이 설정된 경우 위의 두가지 색이 변경될때마다 계속
                //적용해 주어야 한다.
                //
                //단, 원본은 손상되면 안되므로 반드시 _Shape() 안에서 임시변수를
                //사용하여 밝기조정된 색을 사용해야 한다.
                //
                //0 이면 [원래색] 그대로 사용하는 것이다.
                //}--------------------------------------------------------------

                int  _fontSelBackBright;
                int  _fontMouseSelBackBright;

            //}

            //[2008.03.03.월][완료!!!]
            void __fastcall _FontColor(int  pFontColor);

            //[2008.03.03.월][완료!!!]
            void __fastcall _FontStyle(int  pFontStyle);

            //[2010.02.11.목][완료!!!]
            void __fastcall _FontSelColor(int  pFontSelColor);

            //[2010.02.11.목][완료!!!]
            void __fastcall _FontSelBackColor(int  pFontSelBackColor);

            //[2010.02.13.토][완료!!!]
            void __fastcall _FontMouseSelBackColor(int  pFontMouseSelBackColor);

            //[2010.02.13.토][완료!!!]
            void __fastcall _FontMouseSelColor(int  pFontMouseSelColor);


            //[2010.02.13.토][완료!!!]
            void __fastcall _FontSelBackBright(int  pFontSelBackBright);

            //[2010.02.13.토][완료!!!]
            void __fastcall _FontMouseSelBackBright(int  pFontMouseSelBackBright);

        //}

        //[항목 문자열]
        //{
            //[VAR]
            //{
                //[2010.02.11.목][추가!!!]{-------
                //항목을 담은 문자열을 관리한다.
                //[한개행] == [한개항목] 이 된다.
                //}-------------------------------

                char  *_itemStr;

                //[항목수] 는 [행수] 가 된다.
                //[항목 문자열] 을 할당 받을때 자동으로 결정된다.
                int    _itemCount;

                //[문자열 출력 영역]
                //{
                    //[2010.02.11.목][추가!!!]{---------------------------------------
                    //<_itemStr> 을 출력할 영역의 영역 크기를 가진다.
                    //이 값은 <_itemStr> 을 설정하는 <_ItemStr()> 에서 자동 설정된다.
                    //}---------------------------------------------------------------

                    int  _itemStrAreaWidth;
                    int  _itemStrAreaHeight;

                //}

                //[보이는 처음행 시작위치]
                //{
                    //[2022.01.16.일][추가]{---------------------------------------------------------
                    //현재 보이는 영역의 가장 처음항목의 <_itemStr> 상의 [항목행시작위치] 를 가진다.
                    //이 값은 [줄이동] 시에 항상 추적 처리돼야 한다.
                    //}------------------------------------------------------------------------------

                    int  _itemTopStartIndex;

                //}    

            //}

            //[2011.11.16.수][완료!!!]
            int __fastcall _ItemStr(char  *pItemStr);

            //[2018.06.26.화][완료!!!]
            int __fastcall _Item(int    pItemIndex,
                                 char  *rItemStr);

            //[2010.03.10.수][완료!!!]
            int __fastcall _ItemAdd(char  *pItemStr);

            //[2010.03.10.수][완료!!!]
            int __fastcall _ItemInsert(int    pItemIndex,
                                       char  *pItemStr);

            //[2010.03.10.수][완료!!!]
            int __fastcall _ItemReplace(int    pItemIndex,
                                        char  *pItemStr);

            //[2010.03.10.수][완료!!!]
            int __fastcall _ItemDelete(int  pItemIndex);

            //[2010.03.10.수][완료!!!]
            int __fastcall _ItemCount(void);

        //}

        //[출력여백]
        //{
            //[VAR]
            //{
                //항목 출력시 왼쪽과 오른쪽에 동시에 적용될 여백을 결정한다.
                int  _marginX;
                int  _marginY;

            //}

            //[2010.02.11.목][완료!!!]
            void  __fastcall _MarginX(int  pMarginX);

            //[2010.02.11.목][완료!!!]
            void  __fastcall _MarginY(int  pMarginY);   

        //}

        //[자동 크기 설정]
        //{
            //[VAR]
            //{
                bool  _autoWidth;
                bool  _autoHeight;

            //}

            //[2010.02.11.목][처리중!!!]
            void  __fastcall _AutoWidth(bool  pAutoWidth);

            //[2010.02.11.목][처리중!!!]
            void  __fastcall _AutoHeight(bool  pAutoHeight);

        //}

        //[선택항목]
        //{
            //[VAR]
            //{
                //[2010.02.11.목][추가!!!]
                //실제 선택 항목 번호를 가진다(행번호와 같다).
                int  _itemSelIndex; //(기본 : -1)

                //[2010.02.12.금][추가!!!]
                //[화면지정자] 가 위치한 항목의 index.
                //실제 선택된 것은 아니며 현재 [화면지정자] 가 위치해 있는 항목을
                //표시해 주기 위한 것이며, <_itemSelIndex>와는 독립적으로 동작한다.
                int  _itemMouseSelIndex; //(기본 : -1)

            //}

            //[2023.01.29.일][완료]
            void __fastcall _ItemSelStr(//반환할 선택항목의 문자열.
                                        char  *rItemSelStr);

            //[2023.01.29.일][완료]
            void __fastcall _ItemMouseSelStr(//반환할 선택항목의 문자열.
                                             char  *rItemMouseSelStr);

            //[2018.12.26.수][완료!!!]
            void __fastcall _ItemSelect(int  pIndex);

            void __fastcall _ItemMouseSelect(int  pIndex);


        //}

        //[줄이동자]
        //{
            //[2010.02.12.금][완료!!!]
            void __fastcall _ScrollVisible(bool pVisible);

        //}

        //[구동 종류]
        //{
            //[2010.02.13.토][추가!!!]{-------------------------------------------------
            //이 <GList> 는 <GSubMenu>, <GPopupMenu> 를 대체하여 여러곳에서 사용되므로
            //이를 구분할 속성을 추가한다.
            //이 [속성] 은 처음에 생성될때 한번 설정되게 된다.
            //도중에 기능이 전환될 필요가 없기 때문이다.
            //
            //[추가처리사항]------------------------------------------------------------
            //
            //(1) 보일때 자동으로 [촛점] 을 맞춘다.
            //(2) [촛점] 을 잃는 경우는 사라지게 만든다.
            //(3) [항목] 인 선택된 경우도 사라지게 만든다.
            //    단, 이 경우는 먼저 사라지게 한 다음에 해당 [동작함수] 를 호출해 준다.
            //}-------------------------------------------------------------------------

            //[VAR]
            //{
                //[2010.02.13.토][추가!!!]{---------------------------
                //true  : <GSubMenu>, <GPopupMenu> 속성으로 사용한다.
                //false : 일반 <GList> 로 사용한다(기본값).
                //}---------------------------------------------------

                bool   _menuMode; //(기본값 : false)

                //[2010.02.13.토][추가!!!]{----------------------------------------
                //[목록] 의 용도로 사용하는 경우는 반드시 이전에 [촛점] 을 가진
                //[부품] 을 이곳에 기록해 주어야 한다.
                //_MenuShow() 함수를 호출하는 [부품] 에서 기록되고,
                //[촛점] 을 잃는 경우 이 [부품] 에 다시 [촛점] 을 돌려주어야 한다.
                //사용하지 않는 경우는 NULL 을 기록하면 된다.
                //}----------------------------------------------------------------

                void  *_focusedPart;


                //[2011.11.15.화][추가!!!]{-----------------------------------------------------
                //[맷돌C] 상의 [그림부품] 으로 사용하지 않고 일반적으로 BCB 용으로 메뉴등으로
                //사용하는 경우는 [주항목] 중 어떤것의 하위 항목으로 사용중인지 알 필요가 있다.
                //[하위항목] 으로 사용시 <_EVENT_ItemSelect()> 가 호출될때는 이미 [주항목] 은
                //초기화 되고(선택번호: -1) 하위항목은 보이지 않게 된 상태가 되기 때문이다.
                //따라서 이전에 어떤 [주항목] 이 선택되었는지 알기 위하여, 이 [하위항목] 을
                //보여주기 전에 [주항목 선택 번호] 를 먼저 기록해 놓을 필요가 있다.
                //<_EVENT_ItemSelect()> 에서 하위 항목 처리시 이 [변수] 의 값을 참고하면
                //어떤 [주항목] 에 대한 [하위항목] 으로 동작해야 하는지 쉽게 알수 있다.
                //
                //[주의!!!]---------------------------------------------------------------------
                //이 [변수] 는 [맷돌C:그림부품] 상에서는 불필요하다.
                //BCB 에서 <GList> 를 [메뉴] 처럼 사용하는데만 필요한 기능이다. 
                //
                //------------------------------------------------------------------------------
                int  _menuItemIndex; //(기본값 : -1)
                //}-----------------------------------------------------------------------------

            //}

            //[2010.03.11.목][완료!!!]
            void __fastcall _MenuMode(bool pMenuMode);

            //[2012.08.18.토][완료!!!]
            void __fastcall _MenuShow(int  pX,
                                      int  pY);

            //[2012.08.18.토][완료!!!]
            void __fastcall _MenuShowInPart(//지정 그림부품(이 안에 풍선 도움말을 위치 시키게 된다).
                                            void  *pPart,
                                            //지정 그림부품안의 좌표.
                                            int    pX,
                                            int    pY);

            //[2010.02.13.토][완료!!!]
            void __fastcall _FocusedPart(void  *pFocusedPart);

        //}

        //[위치]
        //{
            //[2012.08.13.월][완료!!!]
            void __fastcall _PosInPart(//지정 그림부품(이 안에 풍선 도움말을 위치 시키게 된다).
                                       void  *pPart,
                                       //지정 그림부품안의 좌표.
                                       int    pX,
                                       int    pY);

        //}

        //[바탕]
        //{
            //[VAR]
            //{
                int  _backColor;  //배경색. (BASE : 바탕색)

            //}

            //[2008.03.03.월][완료!!!]
            void __fastcall _BackColor(int  pBackColor);

        //}

        //[테두리]
        //{
            //[VAR]
            //{
                bool  _border;        //테두리 사용유무. (BASE : false)
                int   _borderColor;   //테두리 색. (BASE : 테마색)

            //}

            //[2008.03.03.월][완료!!!]
            void __fastcall _Border(bool  pBorder);

            //[2008.03.03.월][완료!!!]
            void __fastcall _BorderColor(int  pBorderColor);

        //}

        //[풍선도움말]
        //{
            //[VAR]
            //{
                //[2010.01.28.목][추가!!!]{-----------------------------------------
                //[풍선도움말] 에 출력할 문자열을 가진다.
                //단, 메모리 낭비를 막기 위하여 해당 사용이 설정된 경우만 처리한다.
                //}-----------------------------------------------------------------

                bool   _balloonHelpUse; //(기본 : false)

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

                //[2010.01.28.목][추가!!!]{------------------------------------------------------
                //[풍선도움말] 사용시 각각의 [그림부품] 에서 [포인터] 로 관리되는 것을 사용한다.
                //[풍선도움말] 은 무조건 1개는 VMOS 차원에서 생성하므로 이것을 받아서 사용한다.
                //즉, [풍선도움말] 은 공유자원으로 분류한다.
                //
                //[2012.05.01.화][생성!!!]{------------------------------------------------------
                //자세한 내용은 <GPART_GFindDialog_GetPtr2()> 함수안 설명 참고.
                //
                //<*> => <**> 로 수정.
                //[개체] 위치가 아니라 이를 관리하는 <전역변수> 의 위치를 관리.
                //[개체] 가 이미 [삭제] 된상태라도 이 [유/무] 를 확인할수 있다.
                //
                //[2012.05.05.토][설명!!!]-------------------------------------------------------
                //[BCB용] 으로 사용하는 경우는 이미 등록돼 있는 [공용부품] 을
                //무시하고 별도로 생성한 [그리부품] 을 등록하면 된다.
                TGBalloonBox_Form  **_GBalloonBox;
                //}------------------------------------------------------------------------------

            //}

            //[2008.02.03.일][완료!!!]
            void __fastcall _BalloonHelpUse(bool  pUse);

            //[2008.02.03.일][완료!!!]
            void __fastcall _BalloonHelpStr(char  *pStr);

        //}

        //[이벤트 사용 유/무]
        //{
            //[2010.03.22.월][추가!!!]{----------------------
            //[이벤트] 사용설정을 위한 것.
            //기본적으로 모두 사용하지 않는 상태이다.
            //이는 오직 [맷돌-C] 안에서 사용될때만 적용된다.
            //}----------------------------------------------

            bool  _evtMEnter;
            bool  _evtMLeave;
            bool  _evtSelect;
            bool  _evtMSelect;
            bool  _evtSetFocus;
            bool  _evtKillFocus;

            //[2018.07.03.화][추가!!!]
            bool  _evtKEnter;
            bool  _evtKEsc;

            //[2018.07.09.월][추가!!!]
            bool  _evtScroll;

            //[2022.09.18.일][추가]{---
            bool  _evtMClick;
            bool  _evtMDClick;
            //}------------------------

            //[2022.11.10.목][추가]{---
            bool  _evtMDown;
            bool  _evtMUp;
            //}------------------------

        //}

        //[크기조정]
        //{
            //[2008.03.03.월][완료!!!]
            void __fastcall _Left(int  pLeft);

            //[2008.03.03.월][완료!!!]
            void __fastcall _Top(int  pTop);

            //[2008.03.03.월][완료!!!]
            void __fastcall _Width(int  pWidth);

            //[2008.03.03.월][완료!!!]
            void __fastcall _Height(int  pHeight);

            //[2018.06.24.일][완료!!!][폼디자인:모드]
            void __fastcall _Width_Height(int  pWidth, int  pHeight);

        //}

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

            //[화면지정자]
            //{
                //[2010.02.11.목][추가!!!]
                void __fastcall (__closure * _EVENT_MouseEnter)(void);
                void __fastcall (__closure * _EVENT_MouseLeave)(void);

            //}

            //[항목 선택 관련]
            //{
                //[2010.02.11.목][추가!!!]

                //항목이 선택된 경우.
                void __fastcall (__closure * _EVENT_ItemSelect)(void);

                //항목이 변경된 경우.
                //[2010.02.13.토][수정!!!]{-------------------------------------------
                //<_EVENT_ItemSelect> 자체가 [선택 항목] 이 변경된 경우만 발생하므로
                //이 [동작함수] 는 불필요하다.
                //void __fastcall (__closure * _EVENT_ItemSelectChange)(void);
                //}-------------------------------------------------------------------

                //[2010.02.13.토][추가!!!]
                //[화면지정자] 가 위치한 [선택항목] 이 변결된 경우.
                //이는 [목록] 에 해당하는 설명을 출력하거나 할때 대단히 강력한 기능이다.
                void __fastcall (__closure * _EVENT_ItemMouseSelect)(void);

            //}

            //[촛점 관련]
            //{
                //[2010.02.11.목][추가!!!]
                void __fastcall (__closure * _EVENT_FocusSet)(void);
                void __fastcall (__closure * _EVENT_FocusKill)(void);

            //}

            //[MClick 관련]
            //{
                //[2022.09.18.일][추가]
                void __fastcall (__closure * _EVENT_Click)(void);

                //[2022.09.18.일][추가]
                void __fastcall (__closure * _EVENT_DClick)(void);

            //}

            //[특수:맷돌C 에는 미적용]
            //{
                //[2012.02.27.월][추가!!!]
                //[마우스:우측] 버튼이 올라온 경우.
                //<bookMark_DialogBox.cpp> 를 만들면서 [찾기목록(책갈피)] 에
                //[빠른목록] 을 보여주기 위하여 추가.
                void __fastcall (__closure * _EVENT_MouseUp_R)(void);
                //{
                    //<MouseUP> 시 (X, Y) 위치를 기록.
                    int  _mouseX;
                    int  _mouseY;

                //}

                //[2012.02.28.화][추가!!!]
                //<_EVENT_ItemSelect> 와는 반대로 이미 선택된 것이
                //다시 선택된 경우만 동작.
                void __fastcall (__closure * _EVENT_ItemReSelect)(void);

                //[2012.05.20.일][추가!!!]
                //<키:ESC> 가 눌린 경우 동작.
                void __fastcall (__closure * _EVENT_KeyDown_Esc)(void);

                //[2019.03.02.토][추가]
                void __fastcall (__closure * _EVENT_KeyDown_Up)(void);

                //[2019.03.02.토][추가]
                //<Key:Up> 이 눌리자마자 발생(내부 내용 처리전).
                void __fastcall (__closure * _EVENT_KeyDown_PreUp)(void);

            //}

        //}

        //[FUNCTION]
        //{
            //[2006.10.26.목][완료!!!]
            void __fastcall _Draw(void);

            //[2022.01.16.일][완료]
            //[2022.12.27.화][완료]
            void __fastcall _Shape(//<_itemTopStartIndex> 를 내부적으로 다시 계산하는 경우는 <true>.
                                   bool  pIsCal_ItemTopStartIndex);

        //}

        //[동작함수]
        //{
            //[2022.01.16.일][완료]
            void __fastcall _EVENT_Scroll_scrollV(void);

            //[2010.02.12. 금][완료!!!]
            void __fastcall _EVENT_MouseDown_scrollV(void);

        //}

        //[폼디자인:모드]
        //{
            //[2018.06.24.일][추가!!!]

            //[속성]
            //{
                //[그림부품] 을 [폼디자인:모드] 로 사용하는 경우는 true.
                bool  _GFormDesignMode; //(기본값:false)

            //}

            //[부품]
            //{
                //<gui_part.cpp> 에 전역변수로 선언돼 있는 포인터 위치를 참조.
                //유일하게 [한개] 만 존재하므로 초기화 할필요가 없고 관리가 편해진다.
                TGCover_Form  **_GCover;

            //}

            void __fastcall _FormDesignMode(bool  pUse);

            //[이벤트]
            //{
                void __fastcall FormDesignMode_FormMouseDown(TObject *Sender, TMouseButton Button,
                                                             TShiftState Shift, int X, int Y);

            //}

        //}


};

//[API GUI 지원함수]
//{
    //[2012.07.09.월][완료!!!]
    void __fastcall GList_Create(//개체 생성자.
                                 void            *pPart,
                                 //모체 생성자.
                                 void            *pMother,
                                 //사용자가 직접 지정한 [식별자].
                                 unsigned short   pID,
                                 int              pLeft,
                                 int              pTop,
                                 int              pWidth,
                                 int              pHeight,
                                 //생성후 보일것인지 아닌지.
                                 bool             pVisible);

    //[2012.07.09.월][완료!!!]
    void __fastcall GList_Delete(//개체 생성자.
                                 void  *pPart);

    //[2012.07.09.월][완료!!!]
    void __fastcall GList_CreatorInit(//개체 생성자.
                                      void  *pPart);

//}

//---------------------------------------------------------------------------
extern PACKAGE TGList_Form *GList_Form;
//---------------------------------------------------------------------------
#endif
