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

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


#include "font.h"

//[2009.04.30.목]
#include "gui_bmpbutton.h"
#include <ExtCtrls.hpp>



class Tide_hint_Form : public TForm
{
__published:	// IDE-managed Components
    TTimer *captionMoveTimer;
        void __fastcall FormDeactivate(TObject *Sender);
    void __fastcall FormMouseEnter(TObject *Sender);
    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_hint_Form(TComponent* Owner);

        //[2012.06.29.금][완료!!!]
        __fastcall ~Tide_hint_Form(void);

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

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

            //}

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

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

            //[내부 사용 그림]
            //{
                //[2009.04.30.목][추가!!!]{----------------------------------
                //간단한 그림을 보여주어 [지정위치] 를 확실하게 만들어 준다.
                //}----------------------------------------------------------

                Tgui_bmpbutton_Form  *_hint_bmpbtn;

            //}

            //[고정보기 유/무]
            //{
                //[2012.05.22.화][추가!!!]{----------------------------------
                //[촛점] 을 잃은 경우 [감추기] 되지 않도록 하기 위한것.
                //<true>  : [촛점] 을 잃어도 사라지지 않는다.
                //<false> : [촛점] 을 잃으면 사라진다(기본).
                //
                //[주의!!!]--------------------------------------------------
                //<_ShowHint_StrConf_AutoLineInPart2()> 함수를 위한 것으로
                //<_ShowHint_StrConf_AutoLineInPart2()> 함수에서만 <true> 로
                //설정하고 다른 함수에서는 반드시 <false> 로 설정해야 한다.
                //}----------------------------------------------------------

                //[VAR]
                //{
                    bool  _fix; //(기본값 : false)

                //}

                //[2012.05.25.금][완료!!!]
                void __fastcall _FixView(bool  pFixView);

            //}

            //[테두리 색]
            //{
                //[2012.05.25.금][추가!!!]

                //[VAR]
                //{
                    int  _borderColor; //(기본값:환경색).

                //}

                //[2012.05.25.금][완료!!!]
                void __fastcall _BorderColor(int  pBorderColor);

            //}

            //[투명 설정]
            //{
                //[2012.05.25.금][추가!!!]{--------
                //[투명] 은 자체 속성에 직접 설정.
                //}--------------------------------

            //}

            //[닫기버튼]
            //{
                //[2012.06.28.목][추가!!!]{------------------------------------------------------
                //[닫기:버튼] 이 활성화 된 경우는 [촛점] 등을 잃어도 사라지지 않으며
                //일반 [알림창] 처럼 집어끌기 등이 가능하고 [ESC/닫기버튼] 으로만 닫을수 있다.
                //현재는 <_ShowTitleHint_StrConf_AutoLineInPart_CloseBtn()> 함수에서만 사용된다.
                //}------------------------------------------------------------------------------

                //[VAR]
                //{
                    Tgui_bmpbutton_Form  *_close_bmpbtn;

                //}

                //[2012.06.28.목][완료!!!]
                void __fastcall _EVENT_Click_close_bmpbtn(void);

            //}

            //[집어끌기]
            //{
                //[2012.06.28.목][추가!!!]{--------------
                //[집어끌기] 를 지원하기 위한 내부 좌표.
                //}--------------------------------------

                int  _mouseDownX;
                int  _mouseDownY;

            //}

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

            //}

            //[제목줄:관련]
            //{
                //[2012.06.29.금][추가!!!]

                //[제목줄] 사용시는 <true>.
                bool  _titleUse; //(기본값:false)

                //[제목줄:높이] 관리.
                int   _titleHeight; //(기본값:16)

            //}

            //[재출력 관련]
            //{
                //[2012.06.29.금][추가!!!]{-------------------------------------------
                //[재출력] 하는데 필요한 [제목줄 문자열], [형식 적용 문자열] 을 관리.
                //길이가 가변적이므로 [동적생성] 한다.
                //단, 생성한 크기보다 더 큰 경우만 다시 생성.
                //기본 크기는 [제목줄 문자열:256], [형식 적용 문자열:1K] 로 설정.
                //추가 크기는 각각 기본 크기 단위로 추가 생성.
                //}-------------------------------------------------------------------

                char           *_titleStr_; //(기본크기:256);
                int             _titleStrSize;

                unsigned char  *_confStr_;  //(기본크기:1K);
                int             _confStrSize;

            //}

        //}

        //[동작 함수]
        //{
            //[2012.06.29.금][추가!!!]
            void __fastcall (__closure * _EVENT_TitleDown)(void);

        //}

        //[FUNCTION]
        //{
            void __fastcall _Shape(void);

            //[2009.04.30.목][완료!!!]
            void __fastcall _Hint(AnsiString  pSTR);

            //[2009.04.30.목][완료!!!]
            void __fastcall _Hint_EditDebugPanel(int    pY,
                                                 char  *pStr);

            void __fastcall _Draw(void);

            //[2012.06.29.금][완료!!!]
            void __fastcall _ShowHint(int         pX,
                                      int         pY,
                                      AnsiString  pSTR);

            //[2012.06.29.금][완료!!!]
            void __fastcall _ShowHintXY(int         pX,
                                        int         pY,
                                        AnsiString  pStr);

            //[2012.06.29.금][완료!!!]
            void __fastcall _ShowHint_EditDebugPanel(int    pX,
                                                     int    pY,
                                                     char  *pStr);

            //[2012.06.29.금][완료!!!]
            //사용전 [고정보기] 등 설정에 영향 받음.
            void __fastcall _ShowHintAutoLineInPart(//지정 그림부품(이 안에 [귀뜸말] 을 위치 시키게 된다).
                                                    void  *pPart,
                                                    //지정 그림부품안의 좌표.
                                                    int    pX,
                                                    int    pY,
                                                    //반드시 [1행 문자열] 이어야 한다.
                                                    char  *pLineStr);

            //[형식 적용 문자열 관련]
            //{
                //[2012.06.29.금][완료!!!]
                //사용전 [고정보기] 등 설정에 영향 받음.
                void __fastcall _ShowHint_StrConf_AutoLineInPart(//지정 그림부품(이 안에 [귀뜸말] 을 위치 시키게 된다).
                                                                 void           *pPart_,
                                                                 //지정 그림부품안의 좌표.
                                                                 int             pX,
                                                                 int             pY,
                                                                 //[형식 적용 문자열] 자료열(배열).
                                                                 unsigned char  *pConfStr_);

                //[2012.06.29.금][완료!!!]
                void __fastcall _ShowTitleHint_StrConf_AutoLineInPart(//지정 그림부품(이 안에 [귀뜸말] 을 위치 시키게 된다).
                                                                      void           *pPart_,
                                                                      //지정 그림부품안의 좌표.
                                                                      int             pX,
                                                                      int             pY,
                                                                      //[제목줄] 에 보여줄 문자열.
                                                                      char           *pTitleStr_,
                                                                      //[형식 적용 문자열] 자료열(배열).
                                                                      unsigned char  *pConfStr_);

                //[2012.06.29.금][완료!!!]
                void __fastcall _ShowTitleHint_StrConf_AutoLineInPart_CloseBtn
                                (//지정 그림부품(이 안에 [귀뜸말] 을 위치 시키게 된다).
                                 void           *pPart_,
                                 //지정 그림부품안의 좌표.
                                 int             pX,
                                 int             pY,
                                 //[제목줄] 에 보여줄 문자열.
                                 char           *pTitleStr_,
                                 //[형식 적용 문자열] 자료열(배열).
                                 unsigned char  *pConfStr_);

            //}

            //[2012.06.28.목][완료!!!]
            void __fastcall _HideHint(void);

            //[2012.06.28.목][완료!!!]
            void __fastcall _HideHint2(void);

        //}

        //[속성]
        //{
            //[2012.05.25.금][완료!!!]
            void __fastcall _AlphaBlend(bool  pAlphaBlend);

            //[2012.05.25.금][완료!!!]
            void __fastcall _AlphaBlendValue(int  pAlphaBlendValue);

        //}

        //[부가함수]
        //{
            //[2012.06.29.금][완료!!!]
            void __fastcall _TitleStr(char  *pTitleStr_);

            //[2012.06.29.금][완료!!!]
            void __fastcall _ConfStr(unsigned char  *pConfStr_);

        //}

};
//---------------------------------------------------------------------------
extern PACKAGE Tide_hint_Form *ide_hint_Form;
//---------------------------------------------------------------------------
#endif
