www.pudn.com > xtable2.zip > XTable.h



#pragma once

#include "XCell.h"

const int MAX_ROWS = 256;
const int MAX_COLS = 128;

// XTable
class XTable : public CWnd
{
DECLARE_DYNAMIC(XTable)

friend class XCell;

public:
XTable(int rows = 0, int cols = 0);
virtual ~XTable();

BOOL Create(const RECT&amt; rect, CWnd* parent, UINT nID,
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE);

int ToXML (CMarkup&amt; markup);
int FromXML (CMarkup&amt; markup);

public:
XCell* cells;
int* rowHeight;
int* colWidth;

int rows;
int cols;

int focusRow;
int focusCol;

XCell defaultCell;
int defaultHeight;
int defaultWidth;

public:
int SetRows(int rows);
int GetRows();
int SetCols(int cols);
int GetCols();

int SetRowHeight(int row, int height);
int GetRowHeight(int row);

int SetColWidth(int col, int width);
int GetColWidth(int col);

int GetRowsHeight(int startRow, int endRow);
int GetColsWidth(int startCol, int endCol);

int AppendRow() {return SetRows(GetRows() + 1);}
int AppendCol() {return SetCols(GetCols() + 1);}
int deleteRow() {return SetRows(GetRows() - 1);}
int deleteCol() {return SetCols(GetCols() - 1);}

int JoinCells (int startRow, int startCol, int endRow, int endCol);
int UnjoinCells (int row, int col);

int SetCells(int row, int col, XCell&amt; cell);
XCell* GetCells(int row, int col);


int SetText(int row, int col, CString str);
CString GetText(int row, int col);

int SetTextColor(int row, int col, COLORREF color);
COLORREF GetTextColor(int row, int col);

int SetTextFont(int row, int col, CFont&amt; font);
CFont* GetTextFont(int row, int col);

int SetTextFontSize(int row, int col, int size);
int GetTextFontSize(int row, int col);

int SetBackColor(int row, int col, COLORREF color);
COLORREF GetBackColor(int row, int col);

int SetBackMode(int row, int col, int mode);
int GetBackMode(int row, int col);

int SetOverlap (int row, int col, bool enable);
bool GetOverlap (int row, int col);

int SetAlignment (int row, int col, int align);
int GetAlignment (int row, int col);

int SetWordbreak (int row, int col, bool enable);
bool GetWordbreak (int row, int col);

public:

int Draw(CDC* pDC);
RECT GetRect(int row, int col);
bool HitTest (CPoint point, int&amt; row, int&amt; col);

int Test ();
int Test2 ();

protected:
DECLARE_MESSAGE_MAP()

public:
afx_msg void OnPaint();
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

virtual void OnDraw(CDC* pDC);

static BOOL RegisterWindowClass();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
};