166 lines
5.9 KiB
C++
166 lines
5.9 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#ifndef ProgHandlePanelH
|
|
#define ProgHandlePanelH
|
|
|
|
#include <vcl.h>
|
|
#include "SkinScrollBarUnit.h"
|
|
#include "PNGButton.hpp"
|
|
/*---------------------------------------------------------------------------
|
|
TProgHandleItem
|
|
---------------------------------------------------------------------------*/
|
|
class TProgHandleItem;
|
|
class TProgHandlePanel;
|
|
/*---------------------------------------------------------------------------
|
|
TProgHandleItem
|
|
---------------------------------------------------------------------------*/
|
|
class TProgHandleItem : public TObject
|
|
{
|
|
private:
|
|
/***********************************************************************/
|
|
TProgHandleItem *FParent;
|
|
TProgHandlePanel *FOwnerPanel;
|
|
String FCaption;
|
|
bool FIsUnfold;
|
|
bool FIsSelected;
|
|
bool FIsFocus;
|
|
bool FIsHidden;
|
|
bool FIsChecked;
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
int mLevel;
|
|
TRect mRect;
|
|
TRect mValidRect;
|
|
TRect mIconRect;
|
|
TRect mCaptionRect;
|
|
TList *mChildItem;
|
|
TCanvas *mCanvas;
|
|
TPNGButton *mHeaderIconButton;
|
|
TPNGButton *mCheckBox;
|
|
/***********************************************************************/
|
|
|
|
void __fastcall DoHeaderClick(TObject *Sender);
|
|
void __fastcall DoCheckClick(TObject *Sender);
|
|
|
|
void __fastcall SetCaption(String Value);
|
|
void __fastcall SetUnfold(bool Value);
|
|
void __fastcall SetSelected(bool Value);
|
|
void __fastcall SetHidden(bool Value);
|
|
void __fastcall SetChecked(bool Value);
|
|
|
|
int __fastcall GetChildCount();
|
|
|
|
protected:
|
|
void __fastcall AfterConstruction();
|
|
|
|
public:
|
|
void *Data;
|
|
__fastcall TProgHandleItem(TProgHandlePanel *OwnerPanel, String Caption);
|
|
__fastcall TProgHandleItem(TProgHandleItem *Parent, String Caption);
|
|
__fastcall ~TProgHandleItem();
|
|
|
|
/***********************************************************************/
|
|
void __fastcall DrawItem(TCanvas *Canvas, TRect Rect);
|
|
void __fastcall RedrawItem();
|
|
void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
|
|
void __fastcall MouseMove(TShiftState Shift, int X, int Y);
|
|
void __fastcall MouseUp(TMouseButton Button, TShiftState Shift, int X, int Y);
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
TProgHandlePanel *GetOwnerPanel();
|
|
void AddChild(TProgHandleItem *Child);
|
|
TProgHandleItem *Child(int Index);
|
|
/***********************************************************************/
|
|
|
|
__published:
|
|
__property TProgHandleItem *Parent = {read = FParent};
|
|
__property String Caption = {read = FCaption, write = SetCaption};
|
|
__property int ChildCount = {read = GetChildCount};
|
|
__property bool IsUnfold = {read = FIsUnfold, write = SetUnfold};
|
|
__property bool IsSelected = {read = FIsSelected, write = SetSelected};
|
|
__property bool IsHidden = {read = FIsHidden, write = SetHidden};
|
|
__property bool IsChecked = {read = FIsChecked, write = SetChecked};
|
|
};
|
|
/*---------------------------------------------------------------------------
|
|
TProgHandlePanel
|
|
---------------------------------------------------------------------------*/
|
|
class TProgHandlePanel : public TPanel
|
|
{
|
|
private:
|
|
/***********************************************************************/
|
|
int FItemWidth;
|
|
int FItemHeight;
|
|
TNotifyEvent FOnSelectedItem;
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
TList *mTopLevelItemList;
|
|
TList *mItemRectList;
|
|
TList *mItemList;
|
|
int mBeginIndex;
|
|
int mEndIndex;
|
|
int mCurrentItemIndex;
|
|
int mShowCount;
|
|
int mRealShowCount;
|
|
TSkinScrollBar *mScrollBar;
|
|
|
|
TProgHandleItem *mCurrentItem;
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
void __fastcall RecalcItemsRect();
|
|
void __fastcall Reset();
|
|
void __fastcall LoadItem(TProgHandleItem* Item);
|
|
TProgHandleItem *GetItem(int Index);
|
|
int __fastcall GetTopLevelItemCount();
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
MESSAGE void __fastcall WMSize(TWMSize &Message);
|
|
MESSAGE void __fastcall WMEraseBkgnd(TWMEraseBkgnd &Message);
|
|
MESSAGE void __fastcall WMMouseWheel(TWMMouseWheel &Message);
|
|
MESSAGE void __fastcall CMMouseLeave(TMessage &Message);
|
|
MESSAGE void __fastcall WMVScroll(TWMScroll &Message);
|
|
|
|
BEGIN_MESSAGE_MAP
|
|
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
|
|
MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd)
|
|
MESSAGE_HANDLER(WM_MOUSEWHEEL, TWMMouseWheel, WMMouseWheel)
|
|
MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave)
|
|
MESSAGE_HANDLER(WM_VSCROLL, TWMScroll, WMVScroll)
|
|
END_MESSAGE_MAP(TPanel)
|
|
/***********************************************************************/
|
|
|
|
protected:
|
|
void __fastcall AfterConstruction();
|
|
|
|
virtual void __fastcall CreateWnd();
|
|
virtual void __fastcall Paint();
|
|
|
|
DYNAMIC void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
|
|
DYNAMIC void __fastcall MouseMove(TShiftState Shift, int X, int Y);
|
|
DYNAMIC void __fastcall MouseUp(TMouseButton Button, TShiftState Shift, int X, int Y);
|
|
|
|
public:
|
|
__fastcall TProgHandlePanel(TComponent *Owner);
|
|
__fastcall ~TProgHandlePanel();
|
|
|
|
void __fastcall DoItemChange(TObject *Sender);
|
|
void __fastcall DoSelectedItem(TObject *Sender);
|
|
void __fastcall DoCurrentItem(TObject *Sender);
|
|
|
|
void __fastcall AddTopLevelItem(TProgHandleItem* Item);
|
|
void __fastcall ScrollPos(int Pos);
|
|
void __fastcall SetTextFont(String name, int size);
|
|
|
|
TProgHandleItem *GetTopLevelItem(int Index);
|
|
|
|
__published:
|
|
__property TNotifyEvent OnSelectedItem = {read = FOnSelectedItem, write = FOnSelectedItem};
|
|
__property int TopLevelItemCount = {read = GetTopLevelItemCount};
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
#endif
|