已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CMSHFlexGrid类用法m_Flex.SetRows (10); /设置总行数 m_Flex.SetCols (20); /设置总列数 m_Flex.SetFixedRows (1);/设置填充行数 m_Flex.SetFixedCols (1);/设置填充列数 m_Flex.SetTextMatrix (0,1,姓名);/设置(0,1)的字符 CString Temp Temp=m_Flex.GetTextMatrix (0,1); /获得(0,1)处的字符m_Flex.SetColWidth (0,400); /设置第0行的宽为400 m_Flex.SetRowHeight (0,400); /设置第0列的高为400 关于CMSFlexGrid的用法一、关于缇与像素的换算知识Part I我要在Flexgrid的第一列的每一行显示checkbox,如今我自己定义了一个Checkbox链表,然后根据我的数据行数,进行显示,但当我的滚动条滚动时。checkbox的复选状态就会显示得混乱。这是我的代码bool CPOUExportDlg:CreateCheckButtonList()/创建checkbox链表ASSERT_VALID(m_pPOUFileInfoList);ASSERT_VALID(m_pCheckButtonList);/根据文件信息,创建CheckBoxint nCount = m_pPOUFileInfoList-GetCount();/ASSERT(nCount != 0);for(int i =0; i Create(_T(),WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX|BS_NOTIFY|BS_FLAT, CRect(0,0,15,15),GetDlgItem(IDC_MSFLEXGRID_EXPORT),IDC_EXPORT_CHECKBOX + i)TRACE0(CPOUExportDlg: Cant create checkbox button.n);AfxMessageBox(_T(创建CheckBox控件有问题!);return false;m_pCheckButtonList-AddTail(pButton);return true;bool CPOUExportDlg:ShowCheckBox(int nCol)/在第一列显示checkboxCDC *pDC = GetDC();int nRow = 1;/换算比率,1像素 = 15缇int nTwipsPerDotX = 1440 / pDC-GetDeviceCaps(LOGPIXELSX); int nTwipsPerDotY = 1440 / pDC-GetDeviceCaps(LOGPIXELSY); /将缇转换为像素 long lCellWidth = m_gridExport.GetCellWidth()/ nTwipsPerDotX; /long lCellHeight = m_gridExport.GetCellHeight()/ nTwipsPerDotY; long lCellLeft = m_gridExport.GetColPos(nCol) / nTwipsPerDotX;/第1列的X坐标long lCellTop = m_gridExport.GetRowPos(nRow) / nTwipsPerDotY;/第nRow行的Y坐标ReleaseDC(pDC);/设置CheckBox坐标ASSERT_VALID(m_pCheckButtonList);POSITION pos = m_pCheckButtonList-GetHeadPosition();while (pos) lCellTop = m_gridExport.GetRowPos(nRow) / nTwipsPerDotY;/第nRow行的Y坐标CButton * pButton = m_pCheckButtonList-GetNext(pos);pButton-SetWindowPos(&wndTop,lCellLeft + lCellWidth*1/5,lCellTop,13,13,NULL);nRow+;return true;Part 2我的做法是在双击MsFlexGrid控件的单元格时,显示编辑框,但是如何精确定位编辑框在MsFlexGrid控件中的位置呢? 请赐教,谢谢! CRectrect; m_FlexGrid.GetWindowRect(rect); ScreenToClient(rect); longlRow=m_FlexGrid.GetRowSel(); longlCol=m_FlexGrid.GetColSel(); /MSFlexGrid控件的函数的长度单位是缇(twips), /需要将其转化为像素,1440缇=1英寸 CDC*pDC=GetDC(); intnTwipsPerDotX=1440/pDC-GetDeviceCaps(LOGPIXELSX); intnTwipsPerDotY=1440/pDC-GetDeviceCaps(LOGPIXELSY); / longy=m_FlexGrid.GetRowPos(lRow)/nTwipsPerDotY; longx=m_FlexGrid.GetColPos(lCol)/nTwipsPerDotX; longwidth=m_FlexGrid.GetColWidth(lCol)/nTwipsPerDotX+1; longheight=m_FlexGrid.GetRowHeight(lRow)/nTwipsPerDotY+1; CRectrc(x,y,x+width,y+height); rc.OffsetRect(rect.left+1,rect.top+1); rc即为该格大小位置 二、其它常规用法1. 给FlexGrid控件绑定成员变量:m_FlexGrid。2. 设置行列数 m_FlexGrid.SetCols(4); /设置列数 m_FlexGrid.SetRows(6); /设置行数3. 设置固定行数和固定列数 m_FlexGrid.SetFixedRows(1); /设置固定行数为1行 m_FlexGrid.SetFixedCols(0); /设置固定列数为0列4. 设置列宽、行高 m_FlexGrid.SetColWidth(1,1500); /设置列号为1的列宽为1500 m_FlexGrid.SetRowHeight(2,300); /设置行号为2的行高为3005. 设置文本对齐方式 m_FlexGrid.SetColAlignment(1,4); /设置列号为1的文本对齐方式 参数对应描述为: 0 单元内容顶部左对齐。 1 单元内容中间左对齐。对字符串的缺省设置值。 2 单元内容底部左对齐。 3 单元内容顶部居中。 4 单元内容中间居中。 5 单元内容底部居中。 6 单元内容顶部右对齐。 7 单元内容中间右对齐。对数字的缺省设置值。 8 单元内容底部右对齐。 9 单元内容一般对齐方式。对字符串中间左对齐而对数值中间右对齐。6. 设置表头和单元格内容 m_FlexGrid.SetTextArray(0,Head1); /设置表头(第1列)内容为“Head1” m_FlexGrid.SetTextMatrix(1,1,Text); /设置单元格(行号1列号1)内容为“Text”7. 增加一行 m_FlexGrid.AddItem(AddString,(COleVariant)(3L); /在行号为3的位置增加一行8. 合并单元格 for(i=0;im_FlexGrid.GetRows() | lRow=0) /判断点击是否有效 return; CRect rect; m_FlexGrid.GetWindowRect(&rect); /获取FlexGrid控件的窗口矩形 ScreenToClient(&rect); /转换为客户区矩形 CDC* pDC=GetDC(); /MSFlexGrid 控件的函数的长度单位是“缇(twips)”,需要将其转化为像素,1440 缇 = 1 英寸 /计算象素点和缇的转换比例 int nTwipsPerDotX=1440/pDC-GetDeviceCaps(LOGPIXELSX); int nTwipsPerDotY=1440/pDC-GetDeviceCaps(LOGPIXELSY); /计算选中格的左上角的坐标(象素为单位) long y = m_FlexGrid.GetRowPos(lRow)/nTwipsPerDotY; long x = m_FlexGrid.GetColPos(lCol)/nTwipsPerDotX; /计算选中格的尺寸(象素为单位)。加1是实际调试中,发现加1后效果更好 long width = m_FlexGrid.GetColWidth(lCol)/nTwipsPerDotX+1; long height = m_FlexGrid.GetRowHeight(lRow)/nTwipsPerDotY+1; /形成选中个所在的矩形区域 CRect rc(x,y,x+width,y+height); /转换成相对对话框的坐标 rc.OffsetRect(rect.left+1,rect.top+1); CString strValue=m_FlexGrid.GetTextMatrix(lRow,lCol); /获取单元格内容 m_Edit.ShowWindow(SW_SHOW); /显示控件 m_Edit.MoveWindow(rc); /改变大小并移到选中格位置 m_Edit.SetWindowText(strValue); /显示文本 m_Edit.SetFocus(); /获取焦点 编辑完成释放焦点之后,将数据写回单元格。响应Edit控件的EN_KILLFOCUS事件: void CBlackBKDlg:OnKillfocusEditChange() CString strInput; GetDlgItemText(IDC_EDIT_CHANGE,strInput); /获取输入框内容 m_FlexGrid.SetText(strInput); /设置单元格内容 m_Edit.ShowWindow(SW_HIDE); /隐藏输入框 转自:/ewook/blog/item/722f307a9f5593e52f73b346.html14black id=text 我用VC做的界面,在对话框中加入了一个表格控件CMSHFlexGrid类来操作的,我在对话框的OnInitDialog()函数里调用了该类的SetColWidth()函数来改变列宽,但是没有效果啊。SetColWidth(long Index, long BandNumber, long nNewValue)的三个参数分别是什么意思?列宽应该怎么修改?麻烦高手们帮帮忙! 这个问题第1个回答:哈哈,问题解决了。原来SetColWidth(long Index, long BandNumber, long nNewValue)可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《外汇市场风险控制》课件
- 《学习管理系统》课件
- 园林修剪工安全素养水平考核试卷含答案
- 露天采矿工操作管理竞赛考核试卷含答案
- 《学习与迁移》课件
- 植保机械操作工岗前工作质量考核试卷含答案
- 《卓越品质管控》课件
- 混凝土工岗位专业综合考核试卷含答案
- 塑石工岗前创新实践考核试卷含答案
- 耐蚀塑料工标准化竞赛考核试卷含答案
- T/CMSGS 001-2025低空无人驾驶航空器起降点气象观测设施建设和维护要求
- 2026年书记员招聘考试公共基础知识专项试题附答案
- 2026年小学英语学科专业知识(含新课标核心素养)测试卷含答案(三套)
- CESA-2024《整机柜服务器用电源模块规范》
- 福建省泉州市永春第一中学2025-2026学年高二上学期开学考试数学试卷
- 日本介绍课件
- 感染性伤口的处理原则
- 供应室岗前培训
- 行政应诉实务培训课件
- 2025压力容器设计质量控制程序文件
- 【教师版】表格式审题立意小纸条
评论
0/150
提交评论