找回密码
 立即注册

QQ登录

只需一步,快速开始

xjy2004

初级会员

1

主题

5

帖子

388

积分

初级会员

积分
388

活字格认证

最新发帖
xjy2004
初级会员   /  发表于:2014-1-23 23:04  /   查看:8398  /  回复:9
.OperationMode = OperationModeExtended

.SelectBlockOptions = SelectBlockOptionsRows

我想让表格全选中:.SetSelection 1, 1, .MaxCols, .MaxRows 为什么不行?怎么可以全选,谢谢

9 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-1-24 09:18:00
沙发
回复 1楼xjy2004的帖子

您用的是Spread Active那个版本?

请先参考一下如下代码:

  1. fpSpread1.AllowMultiBlocks = True
  2. fpSpread1.SetSelection 1, 1, 3, 1
  3. fpSpread1.AddSelection 1, 3, 3, 3
复制代码


文档路径:ActiveX Reference > ActiveX Methods > SetSelection Method
回复 使用道具 举报
xjy2004
初级会员   /  发表于:2014-1-24 09:50:00
板凳
版本是7.0。
以下代码,似乎是有作用,但弹出的提示窗口显示,没有选中,界面上在第三行确有虚框(非选中状态)
With Grid1
  .AllowMultiBlocks = True
  .SetSelection 1, 3, .MaxCols, 3
'  .AddSelection 1, 4, .MaxCols, 4
  MsgBox .SelectionCount
End With
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-24 10:07:00
地板
回复 3楼xjy2004的帖子

调整一下参数试试看。

如参考如下代码:

  1.             axfpSpread1.AllowMultiBlocks = true;

  2.             //开始默认无选择
  3.             MessageBox.Show(axfpSpread1.SelectionCount.ToString());
  4.             axfpSpread1.SetSelection(1, 1, axfpSpread1.MaxCols, axfpSpread1.MaxRows); //UI上实现选择

  5.             axfpSpread1.AddSelection(1, 1, axfpSpread1.MaxCols, axfpSpread1.MaxRows);

  6.             //选中了,个数为1
  7.             MessageBox.Show(axfpSpread1.SelectionCount.ToString());

  8.             //获得选择内容
  9.             object row = null, col = null, row1 = null, col1 = null;
  10.             axfpSpread1.GetSelection(0, ref col, ref row, ref col1, ref row1);
复制代码
回复 使用道具 举报
xjy2004
初级会员   /  发表于:2014-1-24 11:03:00
5#
不要这句:.OperationMode = OperationModeExtended
就可以达到设置选区的目的,但是,这句不要,我就没办法让用户操作,鼠标拖选+按行选+不连续选的功能呀
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-24 16:25:00
6#
回复 5楼xjy2004的帖子

能把您这个帖子要达成的需求描述一下一下,即需要做什么,不要做什么。
上面的问题,我理解的是您是要全选整个Sheet页面。

对OperationMode 的设置,有6种情况:

  1. 0 - Normal  (Default) Performs default sheet operations  OperationModeNormal  
  2. 1 - Read Only  Places sheet in read-only mode
  3. (Within this mode, there is no current active cell.)  OperationModeRead  
  4. 2 - Row Mode  Places sheet in row mode  OperationModeRow  
  5. 3 - Single Select  Sets sheet to operate like a single-selection list box  OperationModeSingle  
  6. 4 - Multi Select  Sets sheet to operate like a multiple-selection list box  OperationModeMulti  
  7. 5 - Extended Select  Sets sheet to operate like an extended-selection list box  OperationModeExtended  
复制代码


参考文档路径:ActiveX Reference > ActiveX Properties > OperationMode Property
回复 使用道具 举报
xjy2004
初级会员   /  发表于:2014-1-24 23:30:00
7#
先谢谢roger
我用的环境是VB6+fpspread7
需要达到的目标是:
  表格按行选,只读,但要可以ctrl+点击实现不连续按行选,和鼠标拖动或shift实现连续(OperationMode 只能是5了)
  现在需要一个整个表格全选的功能(正常您所说的),表格参数应该怎么设置?谢谢
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-26 11:22:00
8#
回复 7楼xjy2004的帖子

周末晚上工作这么晚,辛苦辛苦  :g~ij:

您的需求分2类:
1 表格按行选择,只读
  Ctrl 可实现不连续行选
   Shift、鼠标可实现连续
2 全选功能

我试验的结果是,需要写2个函数实现,主要是配置2个属性:

  1. '全选
  2. axfpSpread1.OperationMode = OperationModeConstants.OperationModeNormal
  3. axfpSpread1.SelectBlockOptions = SelectBlockOptionsConstants.SelectBlockOptionsRows

  4. '非全选
  5. axfpSpread1.OperationMode = OperationModeConstants.OperationModeExtended
  6. axfpSpread1.SelectBlockOptions = SelectBlockOptionsConstants.SelectBlockOptionsRows
复制代码
回复 使用道具 举报
xjy2004
初级会员   /  发表于:2014-1-26 15:54:00
9#
工作呀,没得办法,roger,感谢你多次辛苦回复!
终于解决了,谢谢
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-26 16:08:00
10#
回复 9楼xjy2004的帖子

不客气,应该的。

也欢迎你有时间在论坛里面帮助解答问题,我们有精美礼品送出的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部