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

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


#include "font.h"

#include "gui_scroll_v.h"


#define d_ListItem_MaxCount    40

struct LISTITEM
{
  //[설명]{-----------------------
  //subitem 한개의 정보를 갖는다.
  //}-----------------------------

  AnsiString  str[d_ListItem_MaxCount];

  //하위 항목 사용수.
  int         count;

  //선택된 항목의 index.
  int         select_index;

};


class Tgui_List_Form : public TForm
{
__published:	// IDE-managed Components
        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 FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	// User declarations
public:		// User declarations
        __fastcall Tgui_List_Form(TComponent* Owner);
        __fastcall ~Tgui_List_Form(void);

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

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

            //}

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

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

            //[내부 컨트롤]
            //{
                //[2007.12.23.일][추가!!!]
                //[수직 줄이동자].
                Tgui_scroll_v_Form   *_list_ScrollV;

            //}

            //[하위항목] 정보가 들어있다.
            struct LISTITEM    _listItem;

            //항목의 높이.
            int                _line_height;

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

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

            //[2007.12.23.일][추가!!!]
            //{
                bool   _autoWidth;     //자동으로 가장 긴 문자열의 폭에 맞춘다.
                bool   _autoHeight;    //자동으로 모든 행이 다 보이게 한다.
                int    _viewLineCount; //보여질 행의 수를 가진다.(단, _autoHeight == true 인 경우는 무효)

                int    _colorBorder;   //테두리 색.
                int    _colorBack;     //바탕 색.
                int    _colorFont;     //문자 색.
                int    _colorSelect;   //선택 행 색.

                //[줄이동자]
                //{
                    //내부에 있는 [줄이동자] 의 색을 설정한다.

                    int    _colorScrollArrow; //줄이동자 화살표 색.
                    int    _colorScrollThumb; //줄이동자 이동자 색.
                    int    _colorScrollBody;  //줄이동자 몸체 색.
                    int    _colorScrollBack;  //줄이동자 전체 바탕색.

                //}

            //}

        //}

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

            //[2007.12.23.일][처리중!!!]
            //{
                void __fastcall _AutoWidth(bool   pAutoWidth);
                void __fastcall _AutoHeight(bool   pAutoHeight);
                void __fastcall _ViewLineCount(int   pViewLineCount);

                void __fastcall _ColorBorder(int   pColorBorder);
                void __fastcall _ColorBack(int   pColorBack);
                void __fastcall _ColorFont(int   pColorFont);
                void __fastcall _ColorSelect(int   pColorSelect);

                void __fastcall _ColorScrollArrow(int   pColorScrollArrow);
                void __fastcall _ColorScrollThumb(int   pColorScrollThumb);
                void __fastcall _COlorScrollBody(int   pColorScrollBody);
                void __fastcall _ColorScrollBack(int   pColorScrollBack);

            //}

        //}


};
//---------------------------------------------------------------------------
extern PACKAGE Tgui_List_Form *gui_List_Form;
//---------------------------------------------------------------------------
#endif
