📄 msflexgrid.cpp
字号:
return result;
}
void CMSFlexGrid::SetMergeRow(long index, BOOL bNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_BOOL;
InvokeHelper(0x3b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, bNewValue);
}
BOOL CMSFlexGrid::GetMergeCol(long index)
{
BOOL result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x3c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms,
index);
return result;
}
void CMSFlexGrid::SetMergeCol(long index, BOOL bNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_BOOL;
InvokeHelper(0x3c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, bNewValue);
}
void CMSFlexGrid::SetRowPosition(long index, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x3d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, nNewValue);
}
void CMSFlexGrid::SetColPosition(long index, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x3e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, nNewValue);
}
long CMSFlexGrid::GetRowData(long index)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x3f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
index);
return result;
}
void CMSFlexGrid::SetRowData(long index, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x3f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, nNewValue);
}
long CMSFlexGrid::GetColData(long index)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x40, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
index);
return result;
}
void CMSFlexGrid::SetColData(long index, long nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x40, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, nNewValue);
}
CString CMSFlexGrid::GetTextMatrix(long Row, long Col)
{
CString result;
static BYTE parms[] =
VTS_I4 VTS_I4;
InvokeHelper(0x41, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms,
Row, Col);
return result;
}
void CMSFlexGrid::SetTextMatrix(long Row, long Col, LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_BSTR;
InvokeHelper(0x41, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
Row, Col, lpszNewValue);
}
void CMSFlexGrid::AddItem(LPCTSTR Item, const VARIANT& index)
{
static BYTE parms[] =
VTS_BSTR VTS_VARIANT;
InvokeHelper(0x42, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Item, &index);
}
void CMSFlexGrid::RemoveItem(long index)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x43, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
index);
}
void CMSFlexGrid::Clear()
{
InvokeHelper(0x44, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CMSFlexGrid::Refresh()
{
InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
CRowCursor CMSFlexGrid::GetDataSource()
{
LPDISPATCH pDispatch;
InvokeHelper(0x4c, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
return CRowCursor(pDispatch);
}
void CMSFlexGrid::SetDataSource(LPDISPATCH newValue)
{
static BYTE parms[] =
VTS_DISPATCH;
InvokeHelper(0x4c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
newValue);
}
BOOL CMSFlexGrid::GetRowIsVisible(long index)
{
BOOL result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x55, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms,
index);
return result;
}
BOOL CMSFlexGrid::GetColIsVisible(long index)
{
BOOL result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x56, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms,
index);
return result;
}
long CMSFlexGrid::GetRowPos(long index)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x57, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
index);
return result;
}
long CMSFlexGrid::GetColPos(long index)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x58, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
index);
return result;
}
short CMSFlexGrid::GetGridLineWidth()
{
short result;
InvokeHelper(0x59, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL);
return result;
}
void CMSFlexGrid::SetGridLineWidth(short nNewValue)
{
static BYTE parms[] =
VTS_I2;
InvokeHelper(0x59, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
short CMSFlexGrid::GetFixedAlignment(long index)
{
short result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x5a, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, parms,
index);
return result;
}
void CMSFlexGrid::SetFixedAlignment(long index, short nNewValue)
{
static BYTE parms[] =
VTS_I4 VTS_I2;
InvokeHelper(0x5a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
index, nNewValue);
}
BOOL CMSFlexGrid::GetRightToLeft()
{
BOOL result;
InvokeHelper(0xfffffd9d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CMSFlexGrid::SetRightToLeft(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0xfffffd9d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
long CMSFlexGrid::GetOLEDropMode()
{
long result;
InvokeHelper(0x60f, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CMSFlexGrid::SetOLEDropMode(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x60f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
void CMSFlexGrid::OLEDrag()
{
InvokeHelper(0x610, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CMSFlexGrid::InitGrid(int type,int row,int col)
{
switch(type)
{
case 1://文化状况子表的可编辑表格
{
CDC* pDC = GetDC();
SetBorderStyle(1);
SetCols(col);
SetRows(row);
SetMergeCells(1);//自由。包含相同内容的相邻单元总是合并。
SetFixedRows(1);
SetFixedCols(1);
SetWordWrap(true);//显示多行表头的先决条件
SetRowHeightMin ( ( long )( ROW_HEIGHT_PIXEL * 1.4 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)) );//坐标单位要转换
SetRowHeight(0,( long )( ROW_HEIGHT_PIXEL * 2 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
SetColWidth(0,( long ) ( COL_WIDTH_INDEX_PIXEL * 3.45 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
for(int n=1;n<col;n++)
SetColWidth(n,( long ) ( COL_WIDTH_INDEX_PIXEL * 4.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
//设置列的对齐方式为列内容中间居中
for ( int i = 0 ; i < col ; i ++ )
SetColAlignment ( i, 4 );
//设置固定行的名称
SetTextMatrix ( 0,0, "入学时间及\r\n学校名称");
SetTextMatrix ( 0,1, "学前教育阶段\r\n小 班");
SetTextMatrix ( 0,2, "学前教育阶段\r\n中 班");
SetTextMatrix ( 0,3, "学前教育阶段\r\n大 班");
SetTextMatrix ( 0,4, "义务教育阶段\r\n一年级");
SetTextMatrix ( 0,5, "义务教育阶段\r\n二年级");
SetTextMatrix ( 0,6, "义务教育阶段\r\n三年级");
SetTextMatrix ( 0,7, "义务教育阶段\r\n四年级");
SetTextMatrix ( 0,8, "义务教育阶段\r\n五年级");
SetTextMatrix ( 0,9, "义务教育阶段\r\n六年级");
SetTextMatrix ( 0,10, "义务教育阶段\r\n七年级");
SetTextMatrix ( 0,11, "义务教育阶段\r\n八年级");
SetTextMatrix ( 0,12, "义务教育阶段\r\n九年级");
SetTextMatrix ( 0,13, "高中教育阶段\r\n一年级");
SetTextMatrix ( 0,14, "高中教育阶段\r\n二年级");
SetTextMatrix ( 0,15, "高中教育阶段\r\n三年级");
SetTextMatrix ( 1,0, "入学时间");
SetTextMatrix ( 2,0, "学校名称");
//选中第二个单元格以初始化
SetRow(2L);
SetCol(1L);
}
break;
case 2://文化户口簿样表
{
CDC* pDC = GetDC();
SetBorderStyle(1);
SetCols(col);
SetRows(row);
SetMergeCells(1);//自由。包含相同内容的相邻单元总是合并。
SetFixedRows(3);
SetFixedCols(0);
SetWordWrap(true);//显示多行表头的先决条件
SetRowHeightMin ( ( long )( ROW_HEIGHT_PIXEL * 1 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)) );//坐标单位要转换
SetRowHeight(0,( long )( ROW_HEIGHT_PIXEL * 1.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
SetRowHeight(1,( long )( ROW_HEIGHT_PIXEL * 0.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
SetRowHeight(2,( long )( ROW_HEIGHT_PIXEL * 1.45 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
SetRowHeight(6,( long )( ROW_HEIGHT_PIXEL * 3.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
SetRowHeight(row-1,( long )( ROW_HEIGHT_PIXEL * 1.45 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)));
for(int n=0;n<col;n++)
SetColWidth(n,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
for(int n=12;n<27;n++)
SetColWidth(n,( long ) ( COL_WIDTH_INDEX_PIXEL * 3.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(0,( long ) ( COL_WIDTH_INDEX_PIXEL * 0.9 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(1,( long ) ( COL_WIDTH_INDEX_PIXEL * 1 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(2,( long ) ( COL_WIDTH_INDEX_PIXEL * 3.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(3,( long ) ( COL_WIDTH_INDEX_PIXEL * 3.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(4,( long ) ( COL_WIDTH_INDEX_PIXEL * 0.9 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(5,( long ) ( COL_WIDTH_INDEX_PIXEL * 0.9 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(6,( long ) ( COL_WIDTH_INDEX_PIXEL * 2.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(7,( long ) ( COL_WIDTH_INDEX_PIXEL * 0.9 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
for(int i=8;i<11;i++)
SetColWidth(i,( long ) ( COL_WIDTH_INDEX_PIXEL * 2.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(11,( long ) ( COL_WIDTH_INDEX_PIXEL * 3 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(27,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.25 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(28,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.45 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(29,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.45 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
//设置列的对齐方式为列内容中间居中
for ( int i = 0 ; i < col ; i ++ )
{
SetColAlignment ( i, 4 );
SetTextMatrix(0,i,"贵州省开阳县文化户口登记薄");//设定0行每一个单元格的内容相同方便合并
}
for ( int i = 0 ; i < 11 ; i ++ )
SetTextMatrix(1,i,"户籍代码:");
for ( int i = 11 ; i < 20 ; i ++ )
SetTextMatrix(1,i,"填表人:");
for ( int i = 20 ; i < col ; i ++ )
SetTextMatrix(1,i,"填报时间:");
for ( int i = 0 ; i < 3 ; i ++ )
SetTextMatrix(2,i,"户主姓名");
for ( int i = 3 ; i < 6 ; i ++ )
SetTextMatrix(2,i," ");
SetTextMatrix(2,6,"性别");
SetTextMatrix(2,8,"族别");
SetTextMatrix(2,10,"出生年月日");
SetTextMatrix(2,11,"出生年月日");
for ( int i = 12 ; i < 15 ; i ++ )
SetTextMatrix(2,i," ");
for ( int i = 15 ; i < 18 ; i ++ )
SetTextMatrix(2,i,"是否非农业\r\n人 口");
for ( int i = 19 ; i < 22 ; i ++ )
SetTextMatrix(2,i,"文化程度");
SetTextMatrix(2,22," ");
SetTextMatrix(2,23," ");
SetTextMatrix(2,24,"编号");
SetTextMatrix(2,25,"编号");
for ( int i = 26 ; i < col ; i ++ )
SetTextMatrix(2,i," ");
for(int i=8;i<28;i++)
SetTextMatrix(3,i,"受 教 育 情 况");
SetTextMatrix(3,28,"残疾类别");
SetTextMatrix(3,29,"残疾类别");
for(int i=8;i<28;i++)
if(i<11)
SetTextMatrix(4,i,"校外情况");
else
SetTextMatrix(4,i,"校 内 情 况");
for ( int i = 3 ; i < row-1 ; i ++ )
SetTextMatrix(i,0,"家\r\n\r\n庭\r\n\r\n成\r\n\r\n员");
for ( int i = 3 ; i < 7 ; i ++ )
SetTextMatrix(i,1,"与\r\n户\r\n主\r\n关\r\n系");
SetTextMatrix(3,2,"姓 名");
SetTextMatrix(3,3,"姓 名");
for(int i=4;i<7;i++)
{
SetTextMatrix(i,2,"现用名");
SetTextMatrix(i,3,"曾用名");
SetTextMatrix(i,28,"三\r\n类\r\n残\r\n疾\r\n类\r\n别");
SetTextMatrix(i,29,"其\r\n它\r\n残\r\n疾\r\n类\r\n别");
}
for(int i=3;i<7;i++)
{
SetTextMatrix(i,4,"性\r\n\r\n别");
SetTextMatrix(i,5,"族\r\n\r\n别");
SetTextMatrix(i,6,"出生\r\n年月\r\n日");
SetTextMatrix(i,7,"是\r\n否\r\n非\r\n农\r\n业\r\n人\r\n口");
}
for(int i=8;i<11;i++)
SetTextMatrix(4,i,"校外情况");
for(int i=5;i<7;i++)
{
SetTextMatrix(i,8,"文化\r\n程度");
SetTextMatrix(i,9,"离校\r\n时就\r\n读年\r\n级");
SetTextMatrix(i,10,"离校、\r\n毕(结)\r\n业、脱\r\n盲时间");
SetTextMatrix(i,11,"入学\r\n时间\r\n及\r\n学校\r\n名称");
SetTextMatrix(i,27,"高\r\n等\r\n教\r\n育\r\n阶\r\n段");
}
for ( int i = 12 ; i < 15 ; i ++ )
SetTextMatrix(5,i,"学前教育阶段");
for ( int i = 15 ; i < 24 ; i ++ )
SetTextMatrix(5,i,"义务教育阶段");
for ( int i = 24 ; i < 27 ; i ++ )
SetTextMatrix(5,i,"高中教育阶段");
SetTextMatrix(6,12,"小\r\n班");
SetTextMatrix(6,13,"中\r\n班");
SetTextMatrix(6,14,"大\r\n班");
SetTextMatrix(6,15,"一\r\n年\r\n级");
SetTextMatrix(6,16,"二\r\n年\r\n级");
SetTextMatrix(6,17,"三\r\n年\r\n级");
SetTextMatrix(6,18,"四\r\n年\r\n级");
SetTextMatrix(6,19,"五\r\n年\r\n级");
SetTextMatrix(6,20,"六\r\n年\r\n级");
SetTextMatrix(6,21,"七\r\n年\r\n级");
SetTextMatrix(6,22,"八\r\n年\r\n级");
SetTextMatrix(6,23,"九\r\n年\r\n级");
SetTextMatrix(6,24,"一\r\n年\r\n级");
SetTextMatrix(6,25,"二\r\n年\r\n级");
SetTextMatrix(6,26,"三\r\n年\r\n级");
CString str;
for ( int i = 1 ; i < col ; i ++ )
{
str.Format("%d",i);
SetTextMatrix(7,i,str);
}
SetTextMatrix(row-1,0,"备注");
SetTextMatrix(row-1,1,"备注");
for ( int i = 2 ; i < col ; i ++ )
{
SetTextMatrix(row-1,i," ");
}
for ( int i = 8 ; i < row-1 ; i ++ )
if(i % 2==0)
SetTextMatrix(i,11,"入学时间");
else
SetTextMatrix(i,11,"学校名称");
for (int j=1,i=1,r = 8; r < row-1; r+=2 )
{
for(int c=1;c<col;c++)
{
if(c<11 || c>26)//设置(第11列前及第26列后)单元格初始内容均为一个空格(不含固定行列),必须先设置后才能实现合并
{
if(i % 2!=0)
SetTextMatrix(r,c," ");
else
SetTextMatrix(r,c," ");
i++;
SetTextMatrix(r+1,c,GetTextMatrix(r,c));
}
}
}
//合并相邻相同内容的单元格
for(int r=0;r<row;r++)
{
SetMergeRow(r,TRUE);
for(int c=0;c<col;c++)
SetMergeCol(c,TRUE);
}
}
break;
case 3://填写关键数据中的村名及编号用到的可编辑表格
{
CDC* pDC = GetDC();
SetBorderStyle(1);
int row=2,col=3;
SetCols(col);
SetRows(row);
SetFixedRows(1);
SetFixedCols(1);
SetRowHeightMin ( ( long )( ROW_HEIGHT_PIXEL * 1.2 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)) );//坐标单位要转换
SetColWidth(0,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.4 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(1,( long ) ( COL_WIDTH_INDEX_PIXEL * 9.55 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(2,( long ) ( COL_WIDTH_INDEX_PIXEL * 7.55 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
//设置列的对齐方式为列内容中间居中
for ( int i = 0 ; i < col ; i ++ )
SetColAlignment ( i, 4 );
//设置固定行的名称
SetTextMatrix ( 0,0, "No.");
SetTextMatrix ( 0,1, "村 名");
SetTextMatrix ( 0,2, "户籍编号前缀");
for (int r = 1; r < row; r++ )
{
CString strNum;
strNum.Format ("%d", r);
//设置固定列的名称
SetTextMatrix (r,0, strNum );
for(int c=col-1;c>=1;c--)//选中每一个单元格以初始化
{
SetRow(long(r));
SetCol(long(c));
}
}
//选中第一个单元格以初始化
SetRow(0L);
SetCol(0L);
}
break;
case 4://审核报告表
{
CDC* pDC = GetDC();
SetBorderStyle(1);
SetCols(col);
SetRows(row);
SetFixedRows(1);
SetFixedCols(1);
SetAllowUserResizing(2);
SetRowHeightMin ( ( long )( ROW_HEIGHT_PIXEL * 0.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSY)) );//坐标单位要转换
SetColWidth(0,( long ) ( COL_WIDTH_INDEX_PIXEL * 1.4 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(1,( long ) ( COL_WIDTH_INDEX_PIXEL * 6.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
SetColWidth(2,( long ) ( COL_WIDTH_INDEX_PIXEL * 9.75 * 1440.0 / pDC->GetDeviceCaps(LOGPIXELSX) ));
//设置列的对齐方式为列内容中间居中
for ( int i = 0 ; i < col ; i ++ )
SetColAlignment ( i, 1 );
//设置固定行的名称
SetTextMatrix ( 0,0, "No.");
SetTextMatrix ( 0,1, "错误源");
SetTextMatrix ( 0,2, "错误信息");
for (int r = 1; r < row; r++ )
{
CString strNum;
strNum.Format ("%d", r);
//设置固定列的名称
SetTextMatrix (r,0, strNum );
}
//选中第一个单元格以初始化
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -