引用actvie x :microsoft CMsflexgrid;


BOOL CCalibrationCoordsDisDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_FlexGrid.put_Rows(); //设置列数
m_FlexGrid.put_Cols(); //设置行数
m_FlexGrid.put_FixedRows(); //设置固定行数为1行
m_FlexGrid.put_FixedCols(); //设置固定列数为0列
m_FlexGrid.put_ColWidth(, ); //设置列号为1的列宽为1500
m_FlexGrid.put_RowHeight(, ); //设置行号为2的行高为300
m_FlexGrid.put_ColAlignment(, ); //设置列号为1的文本对齐方式
m_FlexGrid.put_TextArray(, "Head1"); //设置表头(第1列)内容为“Head1”
m_FlexGrid.put_TextArray(, "Head2");
m_FlexGrid.put_TextMatrix(, , "Text"); //设置单元格(行号1列号1)内容为“Text”
m_FlexGrid.AddItem("AddString", (COleVariant)(3L)); //在行号为3的位置增加一行
for (int i = ; i<; i++)
m_FlexGrid.put_TextMatrix(, i, "合并行"); //将行号为0、列号从0到4的单元格内容设为相同“合计”
m_FlexGrid.put_MergeCells(); //设置单元格合并方式(下述)
m_FlexGrid.put_MergeRow(, TRUE); //设置要合并的行 for (int i = ; i<; i++)
m_FlexGrid.put_TextMatrix(i,, "合并列"); //将列号为2、列号从4到7的单元格内容设为相同“合计”
m_FlexGrid.put_MergeCells(); //设置单元格合并方式(下述)
m_FlexGrid.put_MergeCol(, TRUE); m_FlexGrid.put_GridColor(0xffffff);
for (int row = ; row < ; row++)
{
m_FlexGrid.put_FixedRows(row); //设置固定行数为1行
for (int i = ; i < ; i++)
{
m_FlexGrid.put_FixedCols(i); //设置固定列数为0列
if (row % )
{
m_FlexGrid.put_CellBackColor(0XDFBFA2);
m_FlexGrid.put_CellForeColor(0xff); }
else
{
m_FlexGrid.put_CellBackColor(0XDFBF52);
m_FlexGrid.put_CellForeColor(0x0000ff);
}
}
}
m_FlexGrid.put_FixedRows(); //设置固定行数为1行
m_FlexGrid.put_FixedCols(); //设置固定列数为0列 m_FlexGrid.put_BackColorFixed(0XDFBFA2); //设置固定行列颜色
m_FlexGrid.put_ForeColorFixed(0x00ffff);
}
 
void CCalibrationCoordsDisDlg::ClickMsflexgrid1()
{
long lCol = m_FlexGrid.get_ColSel(); //获取点击的行号
long lRow = m_FlexGrid.get_RowSel(); //获取点击的列号
if (lRow>m_FlexGrid.get_Rows() || lRow == ) //判断点击是否有效
return; CRect rect;
m_FlexGrid.GetWindowRect(&rect); //获取FlexGrid控件的窗口矩形
ScreenToClient(&rect); //转换为客户区矩形
CDC* pDC = GetDC();
int nTwipsPerDotX = / pDC->GetDeviceCaps(LOGPIXELSX);
int nTwipsPerDotY = / pDC->GetDeviceCaps(LOGPIXELSY);
/*long y = m_FlexGrid.get_RowPos(lRow) / nTwipsPerDotY;
long x = m_FlexGrid.get_ColPos(lCol) / nTwipsPerDotX;*/ long x = , y = ;
for (int col = ; col < lCol; col++)
{
x += m_FlexGrid.get_ColWidth(col)/ nTwipsPerDotX;
}
y = m_FlexGrid.get_RowPos(lRow) / nTwipsPerDotY;
//计算选中格的尺寸(象素为单位)。加1是实际调试中,发现加1后效果更好
long width = m_FlexGrid.get_ColWidth(lCol) / nTwipsPerDotX + ;
long height = m_FlexGrid.get_CellHeight() / nTwipsPerDotY + ;
//形成选中个所在的矩形区域
CRect rc(x, y, x + width, y + height);
//转换成相对对话框的坐标
rc.OffsetRect(rect.left + , rect.top + );
CString strValue = m_FlexGrid.get_TextMatrix(lRow, lCol); //获取单元格内容
m_Edit.ShowWindow(SW_SHOW); //显示控件
m_Edit.MoveWindow(rc); //改变大小并移到选中格位置
m_Edit.SetWindowText(strValue); //显示文本
m_Edit.SetSel(, strValue.GetLength());
m_Edit.SetFocus();
} void CCalibrationCoordsDisDlg::OnEnKillfocusEdit1()
{
CString strInput;
GetDlgItemText(IDC_EDIT1, strInput); //获取输入框内容
m_FlexGrid.put_Text(strInput); //设置单元格内容
m_Edit.ShowWindow(SW_HIDE);
}

 

最新文章

  1. SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
  2. 搭建java环境(Eclipse为例)
  3. 两表(多表)关联update的写法
  4. 创建 PDO 实例并在构造函数中设置错误模式
  5. js与jquery的区别
  6. C#登录窗口及验证(+SQL)
  7. Oracle笔记 八、PL/SQL跳转/判断/循环语句块
  8. js 判断对象相等
  9. linux-ubuntu关闭防火墙
  10. Scikit-learn:分类classification
  11. java~springboot~ibatis Invalid bound statement (not found)原因
  12. [BJOI2019]删数(线段树)
  13. Android为TV端助力 http下载视频到指定目录
  14. endnote格式
  15. CSS【06】:CSS显示模式
  16. 洛谷.4008.[NOI2003]editor文本编辑器(块状链表)
  17. 简单理解Hadoop架构原理
  18. Codeforces 937D - Sleepy Game
  19. linux top命令看到的实存(RES)与虚存(VIRT)分析
  20. vec2d

热门文章

  1. 网页性能测试之WebPageTest
  2. 462. Minimum Moves to Equal Array Elements II
  3. R语言-组间差异的非参数检验
  4. Deserializing/Serializing SOAP Messages in C#
  5. 【时光回溯】【JZOJ3567】【GDKOI2014】石油储备计划
  6. PHP汉字验证码
  7. BKDRHash算法的初步了解
  8. DirectX11 With Windows SDK--11 混合状态
  9. HZOJ 辣鸡(ljh)
  10. [ZJOI2007] 小Q的矩阵游戏 (模板—Dinic)