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

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


#include "font.h"
#include "gui_imagebox.h"
#include "ide_menu.h"
#include <ExtCtrls.hpp>


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

        __fastcall Tide_popup_Form(TComponent* Owner);

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

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

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

            //}

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

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

            //caption 에 표시할 문자열을 기록한다.
            char               _caption[100];

            int                _caption_height;
            int                _caption_width;

            //caption 을 마우스로 끄는 경우 true.
            bool               _caption_selected;

            //[제목줄 이동 관련]
            //{
                //[2018.03.17.토][추가!!!]
                int  deltaLeft;
                int  deltaTop;

            //}

            //[하위항목]
            //{
                //[하위항목] 정보가 들어있다.
                struct SUBITEM     _subitem;

                //항목의 높이.
                int                _line_height;

                //버튼이 눌린 경우 true.(기본값 : false)
                bool               _down;

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

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

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

        //[FUNCTION]
        //{
            //[2007.03.06.화][완료!!!]
            void __fastcall _Init(void);
            void __fastcall _Set_Size(void);
            void __fastcall _FormCut(void);
            void __fastcall _Border(void);
            void __fastcall _Draw(void);
            void __fastcall _Menu(void);
            void __fastcall _Popup(int  pX,
                                   int  pY);
        //}

};
//---------------------------------------------------------------------------
extern PACKAGE Tide_popup_Form *ide_popup_Form;
//---------------------------------------------------------------------------
#endif
