Files
AccompanyCube/ShowBarsPanelUnit.h
2026-06-13 00:10:11 +08:00

98 lines
2.6 KiB
C++

//---------------------------------------------------------------------------
#ifndef ShowBarsPanelUnitH
#define ShowBarsPanelUnitH
#include "SkinScrollBarUnit.h"
#include <Vcl.Imaging.pngimage.hpp>
#define BAR_HEADER 0x01
#define BAR_TITLE 0x02
#define BAR_DATA 0x04
#define COLOR_BORDER RGB(164,115,70)
//---------------------------------------------------------------------------
class TShowBarsPanel : public Extctrls::TPanel
{
private:
//背景及小节栏图片
TBitmap *m_imgBackground,
*m_imgBarTitle;
// int m_sFont7,
// m_sFont8,
// m_sFont9,
// m_sFont14,
// m_sFont16;
void CalcViewArea();
void DrawBars();
MESSAGE void __fastcall WMEraseBkgnd(Winapi::Messages::TWMEraseBkgnd &Message);
MESSAGE void __fastcall WMSize(Winapi::Messages::TWMSize &Message);
MESSAGE void __fastcall WMVScroll(Winapi::Messages::TWMScroll &Message);
MESSAGE void __fastcall WMMouseWheel(TWMMouseWheel &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd)
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
MESSAGE_HANDLER(WM_VSCROLL, TWMVScroll, WMVScroll)
MESSAGE_HANDLER(WM_MOUSEWHEEL, TWMMouseWheel, WMMouseWheel)
END_MESSAGE_MAP(Vcl::Extctrls::TPanel)
protected:
//显示相关
int m_nRowShow,
m_nBeginShowRow,
m_nColumnNum,
m_nRowNum,
m_nBarNum,
m_nBarWidth,
m_nBarHeight,
m_nDataWidth,
m_nDataHeight,
m_nRowGapHeight,
m_nTitleHeight,
m_nBarDrawHeight,
m_nLeftBound,
m_nLeftOriBound,
m_nRightBound,
m_nTopBound;
TSkinScrollBar *m_sbVert;
//录音/播放相关
bool m_bPlaying;
int m_iPlayBar,
m_iPlayPoint;
virtual void __fastcall CreateWnd();
virtual void __fastcall Paint(void);
virtual void __fastcall BarPosChanged(){};
virtual void __fastcall SetBarTitle( int iBar, String& strText ){};
virtual void __fastcall DrawBarBkgnd( int iBar, int left, int top ){};
virtual void __fastcall DrawBarContext( int iBar, int left, int top ){};
virtual void __fastcall DrawBarOperation( int iBar, int left, int top ){};
virtual void __fastcall DrawChord( TRect& rcDraw, int iChord );
void GetChordKey( int iChord, int& iMainKey, int& iAjustKey, int& iType );
public:
inline void Play( bool bPlay )
{ m_bPlaying=bPlay; };
inline bool IsPlaying()
{ return m_bPlaying; };
void InitialVars(int nBarNum);
void SetPlayPoint( int iBar, int iPoint );
void InvalidateBar( int iBar, int iBeginPoint, int iEndPoint, int iArea=BAR_DATA );
void ScrollView( int nPos, bool bRedraw=true );
DWORD HitTest( int X, int Y, int& iHitType, bool bAbsorb=true, bool bIgnoreBound=false );
__fastcall virtual TShowBarsPanel(System::Classes::TComponent* AOwner);
__fastcall ~TShowBarsPanel();
};
#endif