Initial commit
This commit is contained in:
+109
@@ -0,0 +1,109 @@
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#ifndef ListPanelH
|
||||
#define ListPanelH
|
||||
|
||||
#include <vcl.h>
|
||||
#include "SkinScrollBarUnit.h"
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
class TListPanel;
|
||||
class TListPanelItem;
|
||||
|
||||
/* 定义下拉列表项点击事件 */
|
||||
typedef void __fastcall(__closure * TListPanelItemClick)(TListPanel *Sender, int Index);
|
||||
|
||||
class TListPanelItem : public TObject {
|
||||
|
||||
private:
|
||||
int FTag;
|
||||
String FCaption;
|
||||
TListPanelItemClick FOnItemClick;
|
||||
|
||||
void __fastcall SetCaption(String Caption);
|
||||
|
||||
public:
|
||||
|
||||
__fastcall TListPanelItem(String Caption, TListPanelItemClick OnItemClick);
|
||||
|
||||
void __fastcall DrawItem(TCanvas *Canvas, TRect Rect, int flag);
|
||||
|
||||
__published:
|
||||
__property String Caption = {read = FCaption, write = FCaption};
|
||||
__property int Tag = {read = FTag, write = FTag};
|
||||
__property TListPanelItemClick OnItemClicked = {read = FOnItemClick, write = FOnItemClick};
|
||||
};
|
||||
|
||||
class TListPanel : public TPanel {
|
||||
private:
|
||||
int FItemHeight,
|
||||
FSelectedItemIndex;
|
||||
|
||||
bool m_IsLButtonDown;
|
||||
|
||||
TRect m_ItemArea;
|
||||
|
||||
TList //*m_ItemRectList,
|
||||
*m_ItemList;
|
||||
|
||||
TSkinScrollBar *m_ScrollBar;
|
||||
|
||||
int m_BeginIndex,
|
||||
m_EndIndex,
|
||||
m_CurrentItemIndex,
|
||||
m_ShowCount,
|
||||
m_RealShowCount,
|
||||
m_MouseX,
|
||||
m_MouseY,
|
||||
m_ItemWidth;
|
||||
|
||||
void __fastcall DoKeyUpDown(int Index);
|
||||
void __fastcall DoShowItemsChange();
|
||||
|
||||
void __fastcall SetItemStatus(int Index, int flag);
|
||||
void __fastcall SetSelectedItemIndex(int Index);
|
||||
|
||||
int __fastcall GetItemsCount();
|
||||
// TRect *__fastcall GetItemRect(int Index);
|
||||
|
||||
MESSAGE void __fastcall WMSize(Winapi::Messages::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:
|
||||
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 TListPanel(TComponent *Owner);
|
||||
__fastcall ~TListPanel();
|
||||
void __fastcall AddItem(TListPanelItem* Item);
|
||||
void __fastcall Clear();
|
||||
TListPanelItem *__fastcall GetItem(int Index);
|
||||
void __fastcall ScrollPos(int Pos);
|
||||
int __fastcall TextWidth(String text);
|
||||
void __fastcall ResetScroll();
|
||||
// void __fastcall SetTextFontSize(int sz);
|
||||
void __fastcall SetTextFont(String name, int size);
|
||||
|
||||
__published:
|
||||
__property int ItemHeight = {write = FItemHeight, read = FItemHeight, default = 16};
|
||||
__property int SelectedItemIndex = {read = FSelectedItemIndex, write = SetSelectedItemIndex};
|
||||
__property int ItemsCount = {read = GetItemsCount};
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user