Files
AC_Pro/TableViewUnit.h
2026-06-13 00:05:19 +08:00

149 lines
4.4 KiB
C++

//---------------------------------------------------------------------------
#ifndef TableViewUnitH
#define TableViewUnitH
//---------------------------------------------------------------------------
#include "ScrollViewUnit.h"
#include "StateBtn.h"
/* * * * * * * * * * * * * * * *
* * * * * * * * TTableView * * * * *
* * * * * * * * * * * * * * * */
#define NOSET -1
class TTableView;
typedef int __fastcall(__closure *TNotiTable)(TTableView *Sender);
typedef int __fastcall(__closure *TNotiT2C)(TTableView *Sender, int iCellIndex);
typedef int __fastcall(__closure *TNotiCell)(TStateBtn *Sender);
typedef int __fastcall(__closure *TNotiCellPt)(TStateBtn *Sender, TPoint pt);
typedef int __fastcall(__closure *TNotiC2C)(TStateBtn *Src, TStateBtn *Des, TPoint pt);
typedef int __fastcall(__closure *TNotiIconsNum)(TStateBtn *parent);
typedef int __fastcall(__closure *TNotiIconsBounds)(TStateBtn *sender, TRect &rtBounds);
typedef vector<int> VCINT;
typedef enum{
CELLS_Default=0,
CELLS_Up,
CELLS_Down,
CELLS_Page
}CELLS;
typedef enum{
SBS_NONE=10,
SBS_POS,
SBS_TOP,
SBS_BOTTOM
}SBS;
class TUIDelegate;
class TMDDelegate;
class TTableView: public TScrollView
{
private:
TNotifyEvent FOnChange;
int FIndSel, FIndFocus, FCount,
FHgtSmall;
bool m_bTop, m_bBom;
int m_PosTotal, m_PosPage, m_PosBegin;
int m_DBNum, m_DBNeed,
m_IndTop, m_IndBeg,
m_UIOff, m_UIOffMerge,
m_HgtSmall, m_HgtTop, m_HgtOver;
VCINT m_VCHGT, m_VCPOS, m_VCCHG;
TPanelDB *m_Title;
TPanelDB *m_Bottom;
int __fastcall getContentHeight();
bool __fastcall DoTableInit();
bool __fastcall DoLstInitial();
void __fastcall DoLstChg(CELLS eCELLS=CELLS_Default, int Offset=0);
void __fastcall DoLstChgPos(CELLS eCELLS=CELLS_Default, int Offset=0);
void __fastcall DoLstChgCel(CELLS eCELLS=CELLS_Default, bool bPaint=true);
void __fastcall DoChgPos(TObject *Sender, short ScrollCode, int iTopLine);
int __fastcall DoHgtTitle(TObject *Sender);
int __fastcall DoHgtBottom(TObject *Sender);
protected:
bool __fastcall IsCellVisible(int iCellIndex);
virtual void __fastcall DoChgSize(TObject *Sender, TRect rtPanelDB){}
virtual int __fastcall DoMouseWheel(TObject *Sender){}
virtual void __fastcall DoPaintLst(TCanvas *pCanvas);
public:
__fastcall TTableView(TComponent* Owner);
__fastcall ~TTableView();
bool __fastcall ReloadData(int iCellIndex=NOSET, SBS iSBS=SBS_NONE, int iTopline=NOSET);
TStateBtn* __fastcall GetCellAds(int iCellIndex);
int __fastcall GetCellHgt(int index);
int __fastcall GetCellBeg();
int __fastcall GetCellBom();
int __fastcall GetCellNum();
void __fastcall SetCellInd(int iCellIndex);
void __fastcall SetSBPos(SBS iSBS=SBS_TOP, int iTopline=0);
__published:
__property int IndFocus = { read =FIndFocus, write=FIndFocus, default=NOSET };
__property int IndSel = { read =FIndSel, write=FIndSel, default=NOSET };
__property int HgtSmall = { read =FHgtSmall, write=FHgtSmall, default=NOSET };
__property int Count = { read =GetCellNum };
__property TNotifyEvent OnChange = {read=FOnChange, write=FOnChange };
private:
TNotiT2C FOnCellHgt;
TNotiTable FOnTitle;
TNotiTable FOnBottom;
TNotiCellPt FOnClickL;
TNotiCellPt FOnClickLP;
TNotiCellPt FOnClickR;
TNotiCellPt FOnClickRP;
__published:
__property TNotiT2C OnCellHgt = { read = FOnCellHgt, write = FOnCellHgt };
__property TNotiTable OnTitle = { read = FOnTitle, write = FOnTitle };
__property TNotiTable OnBottom = { read = FOnBottom, write = FOnBottom };
__property TNotiCellPt OnClickL = { read = FOnClickL, write = FOnClickL };
__property TNotiCellPt OnClickLP = { read = FOnClickLP, write = FOnClickLP };
__property TNotiCellPt OnClickR = { read = FOnClickR, write = FOnClickR };
__property TNotiCellPt OnClickRP = { read = FOnClickRP, write = FOnClickRP };
private:
TNotiT2C FOnMDCell;
TNotiTable FOnMDNum;
TNotiTable FOnMDTop;
TNotiTable FOnMDBottom;
TNotiC2C FOnMDMOV;
__published:
__property TNotiT2C OnMDCell = { read = FOnMDCell, write = FOnMDCell };
__property TNotiTable OnMDNum = { read = FOnMDNum, write = FOnMDNum };
__property TNotiTable OnMDTop = { read = FOnMDTop, write = FOnMDTop };
__property TNotiTable OnMDBottom = { read = FOnMDBottom, write = FOnMDBottom };
__property TNotiC2C OnMDMOV = { read = FOnMDMOV, write = FOnMDMOV };
};
#endif