FarPoint FpSpread控件的使用心得2Word格式文档下载.docx
《FarPoint FpSpread控件的使用心得2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FarPoint FpSpread控件的使用心得2Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
PrivateSubFpSpread1_EnterCell(ByValsenderAsObject,ByValeAsFarPoint.Win.Spread.EnterCellEventArgs)HandlesFpSpread1.EnterCellMe.ShowEvents("
EnterCell"
单元格获取焦点"
单元格失去焦点时
PrivateSubFpSpread1_LeaveCell(ByValsenderAsObject,ByValeAsFarPoint.Win.Spread.LeaveCellEventArgs)HandlesFpSpread1.LeaveCellMe.ShowEvents("
LeaveCel"
单元格失去焦点"
EndSub
其中FpSpread表格中选中一个单元格时,会引发三个事件Entercell,LeaveCell,CellClickFpSpread表格编辑单元格过程时,会引发EditModeOn,N个EditChange,EditModeOff
本文来自CSDN博客,转载请标明出处:
1.FpSpread控件,指定单元格获取焦点.
Me.FpSpread1.ActiveSheet.SetActiveCell(1,1,False)最后一个参数如果为False则,选择新的单元格时,不清除已选择的对象.
2.FpSpread控件,锁定单元格,行,列.
锁定列Me.FpSpread1.ActiveSheet.Columns(0,1).Locked=True
Me.FpSpread1.ActiveSheet.Columns(3).Locked=True
锁定行Me.FpSpread1.ActiveSheet.Rows(0).Locked=True
Me.FpSpread1.ActiveSheet.Rows(2,3).Locked=True
锁定单元格Me.FpSpread1.ActiveSheet.Cells(4,5,6,9).Locked=True
锁定区域的背景色Me.FpSpread1.ActiveSheet.LockBackColor=Color.Red
前景色Me.FpSpread1.ActiveSheet.LockForeColor=Color.Blue
3.FpSpread控件,增加行和列
Me.ShowMesage(String.Format("
当前有{0}行{1}列"
Me.FpSpread1.ActiveSheet.Rows.Count,_
Me.FpSpread1.ActiveSheet.Columns.Count))
增加列Me.FpSpread1.ActiveSheet.Columns.Add(Me.FpSpread1.ActiveSheet.Columns.Count,1)
增加行Me.FpSpread1.ActiveSheet.Rows.Add(Me.FpSpread1.ActiveSheet.Rows.Count,1)
Me.ShowMesage(String.Format("
现在有{0}行{1}列"
Me.FpSpread1.ActiveSheet.Rows.Count,Me.FpSpread1.ActiveSheet.Columns.Count))
4.FpSpread控件,删除行和列
Me.FpSpread1.ActiveSheet.Rows.Count,Me.FpSpread1.ActiveSheet.Columns.Count))
Me.FpSpread1.ActiveSheet.Columns.Remove(10,Me.FpSpread1.ActiveSheet.Columns.Count-10)
Me.FpSpread1.ActiveSheet.Rows.Remove(10,Me.FpSpread1.ActiveSheet.Rows.Count-10)
Me.FpSpread1.ActiveSheet.Rows.Count,Me.FpSpread1.ActiveSheet.Columns.Count))
************************************************************************************
Spread集中在一件事上-使您简单的来开发您的用户能方便浏览并且更新表格数据所需的应用程序。
关于它的特点:
(只是一小部分)
多表单
公式交叉表单应用
支持Unicode编码
按照明显的提示,移动行或列
新的科学计数法、单元格类型和数据格式
快速、经过改良的分类排序功能
增强功能的Spread设计器
自定义滚动条颜色、宽度和长度
双击标题。
自动调整列宽以适应文本宽度
按百分比缩放打印
适合页面打印
水平居中、垂直居中打印
在打印页面的标题和底部添加字符/时间/数值
增强的图像类型支持,包括.gif和.jpg
扩展提示文本(支持大于1000个字符)
当加载一个文件时,支持在一个单元格内保存32000个字符
当某一单元格获取焦点时,隐藏和显示焦点的矩形框
进入编辑状态时,自动定位光标至单元格
列标签转换(字母到数值、数值到字母)
在按钮单元格中对齐文本和图像
最大列宽计算,包括按钮单元格
不影响标题的情况下刷新绑定的Spread
************************************************************
FarpointSpread(VaSpread)控件VB使用(转帖)
编程2009-10-1723:
14阅读221评论4字号:
大大中中小小原文地址:
1.Spread中checkbox的用法
列类别选择combo就可以了
spread的帮助文件中间搜索CellTypeproperty,checkboxcells
//------------------------------------------------------
是这样的,我的webform上放了一个FpSpread控件,我想把行头变成checkbox样式,我的方法是在后台代码中定义:
FarPoint.Web.Spread.CheckBoxCellTypecelltype=newFarPoint.Web.Spread.CheckBoxCellType();
然后将此type赋给行头:
FpSpread1.ActiveSheetView.RowHeader.Cells[0,0].CellType=celltype;
我的问题是:
1.如果我想用一个Button控制当点击Button时,如果CheckBox是选中状态,则在该中显示某某字符,但我不知道这种CheckBox的标识是什么,还有他的状态为选中或没选中返回值是什么?
2.还有其他方法吗?
比如我用
FpSpread1.ActiveSheetView.RowHeader.Cells[0,0].Text="
<
Inputid=\"
nihao\"
checkedtype=\"
CheckBox\"
/>
"
遇到的困难和刚才一样。
请问怎么解决,多谢!
FpSpread1.columnsheader.cells(0,0).text="
Check#"
//-------------------------------------------------------------
确定check所在的位置,然后直接判断FpSpread1.Sheets(0).Cells(1,6).Value是否为1,为1就是选中状态。
我是这样的。
PublicSubSetCOLCheck(spdAsvaSpread,ByVallCol1AsLong,ByVallCol2AsLong,_
OptionalByValIsCenterAsBoolean=True)
Withspd
.Col=lCol1
.Col2=lCol2
.Row=-1
.BlockMode=True
.CellType=10
.TypeHAlign=0
.TypeCheckCenter=IsCenter
.BlockMode=False
EndWith
EndSub
我使用的是Spread,是这么填加的
//---------------------------------------------------------
1.BorderStyle:
调整是否有边框默认为Fixed3DFixedSingle只有一条线2.locationx,y调整位置
3.horizontalScrollBarPolicy默认为Always横向向滚共条始终存在,就是AsNeeded条数超过显示就存在,否则不显示,Never始终没有滚动条
4.verticalScrollBarPolicy默认为Always纵向滚共条始终存在,就是AsNeeded条数超过显示就存在,否则不显示,Never始终没有滚动条
5.Enabled是否可以编辑
点击Sheets属性旁的按钮就会出现关于Sheets页里面属性的设置
1.selectionUnit默认为Cell运行的时候,点击单元格选中的只是一个单元Column整列,Row整行
2.ColumnCountSpread表示数据的列数
3.RowCountSpread表示数据的行数
4.*OperationMode主要是MultiSelect,SingleSelect两种的区分SingleSelect只能选一行,MultiSelect可以择多行。
5.rows和Column下的Resizable可以将列和行的大小固定为不可调整
AddColumns(Integeri,Integerj)添加列,i是起始位置,j是列数。
AddRows(Integeri,Integerj)添加列,i是起始位置,j是列数。
.AddSelection(I,j,k,m)添加选中的cell
.ClearRangeAddSelection(I,j,k,m,true)清空Spread.还有很多常用的方法。
就往Spread中放值的方法
1.创建对应的DataSourceMe.FpSpread1_Sheet1().DataSource=objDs.Tables(0)
Me.FpSpread1_Sheet1().Columns(0).DataField="
id"
Me.FpSpread1_Sheet1().Columns
(1).DataField="
name“
**Id,和name是从数据库中查出来得数据结果集中数据表的字段名。
这样从数据库中查出的值就可放在相应的列上了。
2.也可单独往单元格中放值
Me.FpSpread1_Sheet1.Cells(0,0).Value()=“123”
*放值时需要注意的是FpSpread1_Sheet1的起始位置是(0,0)
如果只有4行4列的话是不存在(4,4)这样的Cells的
Me.FpSpread1_Sheet1.ActiveRowIndex
可以取得选择的行的索引值,从0开始
FpSpread1_Sheet1.Cells(FpSpread1_Sheet1.ActiveRowIndex,1)
可以取得选择的行对应单元格的值。
DimcellButtonTypeAsNewFarPoint.Win.Spread.CellType.ButtonCellType
cellButtonType.Text="
Detail"
Me.SpdYoteyi_Sheet1.ColumnHeader.Cells.Get(0,3).BackColor=System.Drawing.Color.FromArgb(CType(255,Byte),CType(255,Byte),CType(192,Byte))
Withfrm.SpdYoteyi.Sheets(0).Columns.Get(0).ForeColor=System.Drawing.Color.Red
.Columns.Get(3).ForeColor=System.Drawing.Color.Blue
.SetText(0,0,"
eld001"
)
.SetText(0,7,"
2006/04/20"
.SetText(0,9,"
会社AAA"
//动态添加列。
.AddColumns(10,1)
.Columns.Get(10).Label="
詳しい"
.Columns.Get(10).CellType=cellButtonType
EndWith
//获得当前选中行
.SpdYoteyi.ActiveSheet.ActiveRowIndex()
//-------------------------------------------------
关于spread的一些基本操作
对日软件开发,经常会用到spread控件。
使用中积累了一些经验,自己总结一下。
1.spread的cell
在spread的设计界面里可以设置cell的各种属性,和用惯的vb差不多。
其实它的help写的挺详细的,刚开始日文不好看起来不方便,现在可以顺利理解了。
Cell可以是checkbox,文字,数字,时间等等类型,可以只读,可读写,还可以设置背景色,边框等。
和excel相像的。
2.Cell的读写模式。
1.只读
①全体只读
WithspdTEMP
.Col=1
.Col2=.MaxCols
.Row=1
.Row2=-1'
当spd里数据是0条时,.MaxRows会出错。
用-1安全。
.Protect=True
.BlockMode=True
.Lock=True
EndWith
②部分只读,设置行和列就可以
.Col=2
.Col2=5
.Row2=8
2.一般写模式和覆盖写模式
一般写模式:
.EditMode=True
覆盖写模式:
.EditModeReplace=True
区别在于1)光标模式不同,一般写为单个鼠标入力光标,覆盖写已有内容全选,替换输入。
2)当输入带有小数的数字时,覆盖写会自动跳到小数最末位,这可能是spread3.0在win2000下的bug吧。
症状是第一遍输入10.23时会变成1.03,第二遍输入时就好了。
试验了很多次,最后不得已换成一般写模式。
3.spread的click事件
①这是一段点击每行第三列时,自动全行copy数据的例子。
PrivateSubspdTMSR160_Click(ByValColAsLong,ByValRowAsLong)
DimtempAsString
DimiAsInteger
IfRow=0ThenExitSub
IfspdTMSR160.Lock=TrueThenExitSub
WithspdTMSR160
.Col=3
.Col2=.MaxRows
.Row=Row
.Row2=Row
IfCol=2And.Value<
>
"
Then
IfMsgBox("
3月の予算金額を全ての月にコピーしてもよろしいですか?
vbQuestion+vbYesNo)=vbYesThen
temp=.Value
Fori=1To11
.Col=.Col+1:
.Value=temp
Next
EndIf
.BlockMode=False
②这是一段有选择按钮的例子。
选中时行变色,部分cell改变入力状态。
PrivateSubspdTMSR020_Click(ByValColAsLong,ByValRowAsLong)
IfspdTMSR020.Lock=TrueThenExitSub
IfCol>
=1AndCol<
=7Then
WithspdTMSR020
.Value=IIf(.Value=0,1,0)
If.Value=0Then
IfRowMod2=0Then
.BackColor=RGB(245,236,233)
Else
.BackColor=RGB(255,255,255)
.Col=8
.Col2=11
.BackColor=RGB(128,255,128)
.Lock=False
.EditMode=True
spread3.0的选择按钮很脆弱,一不小心小红钩不见了,事件却没有触发。
所以把边上的固定列都设为可选择状态。
4.关于背景色的设置。
Backcolor指定范围,设置背景色
SetOddEvenRowColor,设置奇数,偶数行的颜色。
本来背景色是粉红和白色相间的,但是单行变色判断和全体变色中产生问题,不得不改成全白的。
其根本原因是backcolor比SetOddEvenRowColor要强。
Backcolor可以更改SetOddEvenRowColor设置的颜色,而SetOddEvenRowColor却无法改变Backcolor设定的颜色。
而当数据很多时,背景需要刷新时,用backcolor一行一行判断更改,画面会产生剧烈颤抖….
//----------------------------------
序号属性说明
1.MaxRows=10设置总行数为10行
2.MaxCols=5设置总列数为5列
3.ColHeaderRows=2表头(列标题)行数为2
4.Row=SpreadHeader定位到表头(列标题)
5.Row=-1定位到行头(在设置列格式时使用)
6.ColWidth
(1)=16设置第1列的列宽为16
7.RowHeight
(1)=12设置第1行的行高为12
8.FontSize=10"
设置当前栏位的字体大小为10(如果.Row=-1,
则设置整列,下同)"
9.TypeHAl