vsflexgrid技巧大全
如何实现将vsflexgrid中修改的数据反馈到数据库中??
PrivateSubvsflexgrid1_AfterEdit(ByValRowAsLong,ByValColAsLong)
rs.MoveFirst'//rs为记录集
rs.Movevsflexgrid1.Row-1
rs.Edit
Ifvsflexgrid1.text=""Then
rs.Fields(vsflexgrid1.Col-1)=Null
Else
rs.Fields(vsflexgrid1.Col-1)=vsflexgrid1.text
EndIf
rs.Update
endsub
一、增加记录使用for来循环表格行。
fori=1togrid1.rows-1
withrs
.addnew
.fileds(o)=grid1.textmariy(i,0)
.fileds(1)=grid1.textmariy(i,1)
.fileds(2)=grid1.textmariy(i,2)
.fileds(3)=grid1.textmariy(i,3)
.update
endwith
next
二、添加行
grid1.additemrow
三、删除当前行
withgrid1
i=.row
.removeitemi
endwith
四、要显示下拉框,可以使用vsflexgrid中列绑定功能
grid1.colcombolist(1)=grid.buildcombolist(rs,"商品名称")
跟楼上的相比,仅仅是datamode不一样(2-flexDMBoundBatch)
但这样做的优势是非常明显的:可以撤销包括新增删除在内的所有操作,按保存键才写入数据库
PrivateSubCmdDel_Click()
Iffg.Row<>0Thenfg.RemoveItem(fg.Row)
fg.Refresh
EndSub
PrivateSubCmdAdd_Click()
OnErrorResumeNext
Adodc1.Recordset.AddNew
IfErr.Number<>0ThenMsgBoxErr.Description
EndSub
PrivateSubCmdUpdate()
Adodc1.Recordset.UpdateBatchadAffectAllChapters
EndSub
PrivateSubCmdCancel_Click()
Adodc1.Recordset.CancelBatch
fg.DataRefresh
EndSub
PrivateSubForm_Load()
Adodc1.ConnectionString="FILENAME="&App.Path&"/conn.dsn"
Adodc1.LockType=adLockBatchOptimistic
Adodc1.RecordSource="Your_Tablename"
Setfg.DataSource=Adodc1
EndSub
1、打印vsflexgrid可以使用vsprinter打印控件。跟vsflexgrid配套使用效果不错。
2、导出EXECL,可以使用grid.savegrid的方法。
用savegrid的方法,在导出execl时,如果碰到类似于银行帐号的列如:“6465456665”,导到EXECL中就不这样显示了,这个问题还不知道怎么解决??
另外也可以写代码(这个方法比较实用,但慢一些):
DimexcelAppAsExcel.Application
SetexcelApp=NewExcel.Application
OnErrorResumeNext
IfexcelAppIsNothingThen
SetexcelApp=CreateObject("Excel.application")
IfexcelAppIsNothingThen
ExitSub
EndIf
EndIf
excelApp.Visible=True
Me.MousePointer=vbHourglass
excelApp.Workbooks.Add
WithexcelApp.ActiveSheet
DimiAsInteger,jAsInteger
Fori=1ToGrid1.rows
Forj=1ToGrid1.Cols
.Cells(i,j).value="'"&Grid1.TextMatrix((i-1),(j-1))'加上“'”号则可以解决上面savegrid中银行帐号的导出问题。
Nextj
DoEvents
Nexti
EndWith
Me.MousePointer=vbDefault
SetexcelApp=Nothing
EndSub
EXCEL同Vsflexgrid通过
最近很多的朋友,都想知道EXCEL怎样同VSflexgrid交换数据。
实际上,利用“复制”、“粘贴”菜单即可实现。具体如下:
(1)在Vsflexgrid上弹出右键菜单
PrivateSubgrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,yAsSingle)
ifButton=2ThenPopupMenumnutccd
EndSub
(2)设置各菜单的内容
A复制
Clipboard.Clear
Clipboard.SetTextgrid1.Clip
B剪切
DimrowcAsLong
DimrowzAsLong
DimcolcAsLong
dimcolzAsLong
dimiaslong
dimsaslong
Ifgrid1.Rows=1ThenExitSub
Clipboard.Clear
Clipboard.SetTextgrid1.Clip
Ifgrid1.RowSel>grid1.rowThen
rowc=grid1.row
rowz=grid1.RowSel
Else
rowc=grid1.RowSel
rowz=grid1.row
EndIf
Ifgrid1.ColSel>grid1.ColThen
colc=grid1.Col
colz=grid1.ColSel
Else
colc=grid1.ColSel
colz=grid1.Col
EndIf
Fori=rowcTorowz
Fors=colcTocolz
grid1.TextMatrix(i,s)=""
Next
Next
C粘贴(精华部分)
DimiAsLong
DimsAsLong
DimmAsLong
DimtAsLong
Ifgrid1.Rows=1ThenExitSub
t=Len(Clipboard.GetText)
Ift=0ThenExitSub
Fori=1Tot
IfMid(Clipboard.GetText,i,1)=Chr(9)Thens=s+1
IfMid(Clipboard.GetText,i,1)=Chr(13)Thenm=m+1
Next
Ifs/(m+1)+grid1.Col>grid1.Cols-1Then
grid1.ColSel=grid1.Cols-1
Else
grid1.ColSel=s/(m+1)+grid1.Col
EndIf
Ifgrid1.row+m>grid1.Rows-1Then
grid1.RowSel=grid1.Rows-1
Else
grid1.RowSel=grid1.row+m
EndIf
grid1.Clip=Clipboard.GetText
VSFlexGrid常用属性或方法:
.FixedRows=1'固定几行
.FixedCols=1'固定几列
.Editable=True'允许修改
.AllowUserResizing=flexResizeBoth'可调整行/列
.FocusRect=flexFocusNone'无虚框
.SelectionMode=flexSelectionListBox'焦点选中样式
.BackColor=RGB(255,255,255)'单元背景色
.BackColorSel=vbBlue'单元选择色
.BackColorFixed=RGB(208,192,160)'固定单元色
.BackColorAlternate=RGB(255,250,230)'间隔行背景色
.GridColor=RGB(245,240,210)'单元线条色
.ForeColor=RGB(0,0,0)'单元前景色(字符色)
.RowHeightMin=260'最小行高
.RowHeightMax=800'最大行高
.ColHeightMin=50'最小列宽
.ColHeightMax=3000'最大列宽
.ColWidth(Col)=1000'指定列宽
.RowHeight(Row)=260'指定行高
.TextMatrix(Row,Col)="Text"'指定单元字符
.Text="Text"'选定单元字符
.MergeCol(Col)=True'允许合并列
.MergeRow(Row)=True'允许合并行
.MergeCells=0|1|2|3|4|5|6'合并选项
.Cell(选项准则,Row1,Col1,Row2,Col2)'选择部分的相应准则值
.EditCell'当移动到当前单元时自动选择
.EditSelStart'移动到单元时的光标位置
.MousePointer'设置对象的鼠标指针样式O.A=0到15|99
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
几个特殊的属性方法的使用:
FormatString属性:管道符格式化字符串示例:
下面定义对齐方式同字意,列宽窄同距离
VSG1.FormatString="^中|<左|>右|>右|^中"
+++++++++++++++++++++++++
搜索(查找)表格中符合条件的行:
FindRow属性:该属性返回一个行值
MsgBoxVSG1.FindRow(关键词,[指定行],[指定列],[敏感],[精度])
关键词:String,表示要搜索的字符串
指定行/指定列:Long,表示只在指定的行或列中找
敏感:Boolean,
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
'限制只能在指定列输入(这里默认倒数第2列)
PrivateSubVSG1_BeforeRowColChange(ByValOldRowAsLong,_
ByValOldColAsLong,ByValNewRowAsLong,_
ByValNewColAsLong,CancelAsBoolean)
VSG1.Editable=flexEDKbd
IfVSG1.Redraw<>flexRDNoneAndNewCol<>VSG1.Cols-2Then
Cancel=True
VSG1.SelectNewRow,VSG1.Cols-2
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
限制不能编辑某些列:(这里限制第1列和第3列)
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
VSG1.FocusRect=flexFocusNone
VSG1.Editable=flexEDNone
'SendKeys"{TAB}"
Else
VSG1.Editable=flexEDKbd
SendKeys"{ENTER}"
EndIf
EndSub
或:
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
SendKeys"{RIGHT}"
Else
SendKeys"{ENTER}"
EndIf
EndSub
或:
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
VSG1.Editable=flexEDNone
Else
VSG1.Editable=flexEDKbd
VSG1.EditCell'自动选择单元内容
VSG1.EditSelStart=0[选到最前]|1[选到指定]|Len(VSG1.Text)[选到最后]
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
'对齐方式(-1标示所有)
.ColAlignment(-1)=flexAlignLeftCenter|flexAlignCenterCenter|flexAlignRightCenter
示例1:(最后一行的第3列靠右对齐)
VSG1.SelectVSG1.Rows-1,2
VSG1.CellAlignment=flexAlignRightCenter
示例2:
VSG1.Row=VSG1.Rows-1:VSG1.Col=1
VSG1.CellAlignment=flexAlignRightCenter
示例3:
VSG1.Cell(flexcpAlignment,VSG1.Rows-1,1,VSG1.Rows-1,3)=flexAlignRightCenter
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
本对象拖放:
PrivateSubVSG1_MouseDown(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
VSG1.Drag
VSG1.DragIcon=LoadPicture("D:/Icon.ico")
VSG1.DragRowVSG1.RowSel
EndSub
或从其它对象拖:
PrivateSubVSG2_MouseDown(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
VSG2.OLEDrag
VSG1.OLEDropMode=flexOLEDropAutomatic
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PublicSubVSGridCount(OptionalSelRowAsLong,OptionalSelColAsLong)
DimXAsLong,iAsLong
DimHj1,Hj2,Hj3AsString
ConstA1=-922337203685477#,A2=922337203685477#
OnErrorGoToErrTransact
WithfrmFG.VSG1
X=.Rows-1
.MergeCells=flexMergeFree
.MergeRow(X)=True
.Cell(flexcpText,X,0,X,1)="合计"
If.Rows=3Then
.TextMatrix(X,0)=0
.Cell(flexcpText,X,2,X,14)=""
.Cell(flexcpText,X,16,X,17)="¥0.00"
ExitSub
EndIf
'Hj1=Val(.Aggregate(flexSTSum,2,2,X-1,2))
'Hj2=Val(.Aggregate(flexSTSum,2,16,X-1,16))
'Hj3=CurrencyToStr(Hj2)
Fori=2ToX-2
Hj1=Hj1+Val(.TextMatrix(i,15))
IfVal(.TextMatrix(i,16))>0Then
Hj2=Hj2+Val(.TextMatrix(i,15))*Val(.TextMatrix(i,16))
EndIf
Nexti
IfHj2<=A1OrHj2>=A2Then
GoToErrTransact
EndIf
Hj3=CurrencyToStr(Hj2)
.TextMatrix(X,2)=Hj1
.Cell(flexcpText,X,3,X,15)=IIf(Hj3="","",Hj3)
.Cell(flexcpText,X,16,X,17)=Format(Hj2,"¥0.00")
.Cell(flexcpAlignment,X,2,X,14)=flexAlignLeftCenter
'.SelectX,3
'.CellAlignment=flexAlignLeftCenter
IfSelRow>1AndSelCol>0Then.SelectSelRow,SelCol
EndWith
ExitSub
ErrTransact:
MsgBox"你输入的数字过大无法计算!请修改!!!"
EndSub
------------------------------------------------
将数字转换为大写金额的函数:
FunctionCurrencyToStr(ByValNumberAsCurrency)AsString
Number=Val(Trim(Number))
IfNumber=0ThenCurrencyToStr="":ExitFunction
Dimstr1AryAsVariant,str2AryAsVariant
str1Ary=Split("零壹贰叁肆伍陆柒捌玖")
str2Ary=Split("分角元拾佰仟万拾佰仟亿拾佰仟万拾佰")
DimaAsLong,bAsLong'循环基数
Dimtmp1AsString'临时转换
Dimtmp2AsString'临时转换结果
DimPointAsLong'小数点位置
IfNumber<=-922337203685477#OrNumber>=922337203685477#Then
ExitFunction
EndIf
tmp1=Round(Number,2)
tmp1=Replace(tmp1,"-","")'先去掉“-”号
Point=InStr(tmp1,".")'取得小数点位置
IfPoint=0Then'如果有小数点,最大佰万亿
b=Len(tmp1)+2'加2位小数
Else
b=Len(Left(tmp1,Point+1))'包括点加2位小数
EndIf
''先将所有数字替换为中文
Fora=9To0Step-1
tmp1=Replace(Replace(tmp1,a,str1Ary(a)),".","")
Next
Fora=1Tob
b=b-1
IfMid(tmp1,a,1)<>""Then
Ifb>UBound(str2Ary)ThenExitFor
tmp2=tmp2&Mid(tmp1,a,1)&str2Ary(b)
EndIf
Next
Iftmp2=""ThenCurrencyToStr="":ExitFunction
''〓下面为非正式财务算法,可以去掉〓
Fora=1ToLen(tmp2)
tmp2=Replace(tmp2,"零亿","亿零")
tmp2=Replace(tmp2,"零万","万零")
tmp2=Replace(tmp2,"零仟","零")
tmp2=Replace(tmp2,"零佰","零")
tmp2=Replace(tmp2,"零拾","零")
tmp2=Replace(tmp2,"零元","元")
tmp2=Replace(tmp2,"零零","零")
tmp2=Replace(tmp2,"亿万","亿")
Next
''〓上面为非正式财务算法,可以去掉〓
IfPoint=1Thentmp2="零元"+tmp2
IfNumber<0Thentmp2="负"+tmp2
IfPoint=0Thentmp2=tmp2+"整"
CurrencyToStr=tmp2
EndFunction
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cell属性的使用:
Cell的作用是给以选定区块的特定的设置值,具体值可参阅相应属性值。
语法:Cell(条件准则,Row1,Col1,Row2,Col2)=相应准则值
其中的“条件准则”有以下准则常数,根据准则的不同而设置相应准则的值:
flexcpAlignment对齐方式
flexcpBackColor背景色
flexcpChecked选择框
flexcpCustomFormat格式设置
flexcpData日期
flexcpFloodColor颜色
flexcpFloodPercent背景色
flexcpFont字体
flexcpFontBold粗体
flexcpFontItalic斜体
flexcpFontName字体名
flexcpFontSize字体大小
flexcpFontStrikethru删除线
flexcpFontUnderline下划线
flexcpFontWidth字符宽
flexcpForeColor字符色
flexcpHeight高
flexcpLeft左
flexcpPicture添加图
flexcpPictureAlignment图对齐
flexcpRefresh刷新
flexcpSort分类
flexcpText字符
flexcpTextDisplay显示字符
flexcpTextStyle文本样式
flexcpTop返回顶端高,同RowPos和valueMatrix属性
flexcpvalue返回字符值
flexcpVariantvalue返回字符值
flexcpWidth返回单元宽
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
flexSTSum方法:每行增加小计行[这个方法还不会用]语法:
VSG.flexSTSum常数名,
[GroupOnAsLong],:标签列
[TotalOnAsLong],:计算列
[FormatAsString],:格式,例"$0.00"
[BackColorAsColor],:Color
[ForeColorAsColor],:Color
[FontBoldAsBoolean],:False|True
[CaptionAsString],:例"数%s"
[MatchFromAsInteger],:0|1|2|3
[TatalOnlyAsBoolean]:False|True
常数名:
常数常数值说明
flexSTNone0大纲唯一的,没有合计价值
flexSTClear1清除全部的小计
flexSTSum2总数
flexSTPercent3总数的百分比
flexSTCount4行数
flexSTAverage5平均
flexSTMax6最大的
flexSTMin7最小的
flexSTStd8标准偏差
flexSTVar9方差
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MousePointer、MouseIcon鼠标指针的应用:
0=flexDefault
1=flexArrow
2=flexCross
3=flexIBeam
4=flexIcon
5=flexSize
6=flexSizeNESW
7=flexSizeNS
8=flexSizeNWSE
9=flexSizeEW
10=flexUpArrow
11=flexHourglass
12=flexNoDrop
13=flexArrowHourGlass
14=flexArrowQuestion
15=flexSizeAll
50=flexPointerCopy'(&H32)'拖动带拷贝
51=flexPointerMove'(&H33)'拖动
52=flexSizeHorz'(&H34)'左右调整
53=flexSizeVert'(&H35)'上下调整
54=flexHand'(&H36)手型
99=flexCustom'自定义
ConstMA="50,51,52,53,54"
DimxyAsInteger
xy=Val(Text1.Text)
Ifxy>15Andxy<>99AndInStr(MA,xy)=0Thenxy=15
VSG1.MousePointer=xy
Ifxy=99Then
VSG1.MouseIcon=LoadPicture("C:/icon/Icon.ico")
EndIf
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
单击列头将列互相拖动调换:
方法一:
VSG1.ExplorerBar=flexExMove'2这是最简单的方法了
注意这个属性在VB属性表中只设置了0、1、2、3、5、7、8种常数值
ExplorerBar属性(value=0|1|2|3|5|7|8):
0-flexExNone:默认,单击列头选择整列,单击行头选择整行
1-flexExSort:单击列头可正反排序该列,单击行头选择整行
2-flexExMove:单击列头可交换列顺序,单击行头选择整行
3-flexExSortAndMove:具有1和2的功能
4:单击列头可正反排序该列并在列头显示相应箭头,单击行头选择整行
5-flexExSortShow:好像与4相同也
6:具有2和4的功能
7-flexExSortShowAndMove:好像与6相同也
8-flexExMoveRows:单击列头选择整列,可拖动行
9:单击列头可正反排序该列,可拖动行
10:可拖动行与列
11:可排序列及拖动行列
12:可排序列并在列头显示相应箭头,还可拖动行
13:同12。
14:除12功能外,可拖动列
15:同14。
方法二:
PrivateSubVSG1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Dimr%,c%
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Then
VSG1.Tag=c
VSG1.Cell(flexcpBackColor,0,c)=vbYellow
VSG1.MousePointer=flexPointerMove
EndIf
EndSub
PrivateSubVSG1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfLen(VSG1.Tag)Then
Dimr%,c%,p%
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Thenp=flexPointerMove
IfVSG1.MousePointer<>pThenVSG1.MousePointer=p
EndIf
EndSub
PrivateSubVSG1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfLen(VSG1.Tag)Then
Dimr%,c%,target%
target=VSG1.Tag
VSG1.Cell(flexcpBackColor,0,target)=0
VSG1.Tag=""
VSG1.MousePointer=0
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Andc<>targetThen
VSG1.ColPosition(target)=c
EndIf
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VSFlexString控件属性一览表
CaseSensitive???
Error失败时取得错误信息
Index索引
MatchCount取得与检索条件相一致的字符串数量
MatchIndex设定与检索条件相一致的字符串的索引
MatchLength取得与检索条件相一致的字符串长度
MatchStart取得与检索条件相一致的字符串起始位置
MatchString取得与检索条件相一致的字符串
Name
Object
Parent
Pattern设定检索条件
Replace设定置换字符串
Soundex取得代表当前检索字符的声音代码
Tag
TagCount取得与检索条件相一致的标签数量
TagIndex在多个标签情况下,设定/取得与检索条件相一致的标签索引
TagLength取得与检索条件相一致的标签长度
TagStart取得与检索条件相一致的标签起始位置
TagString取得与检索条件相一致的标签的字符串
Text设定成为检索对象
Version取得FlexString的版本号
--------------------------------------------------------
MSFlexGrid与VSFlexGrid的单元格合并例子:
PrivateSubForm_Load()
DimiAsLong
Withfg
.WordWrap=True
.Rows=6
.Cols=6
.FixedRows=2
.FixedCols=0
.ColWidth(0)=1500
.RowHeight(0)=300
.RowHeight(1)=300
.TextMatrix(1,1)="进货"
.TextMatrix(1,2)="销售"
.TextMatrix(1,3)="退货"
.TextMatrix(1,4)="结存"
Fori=1To.Rows-1
.RowHeight(i)=300'设置行高
Nexti
Fori=0To1
.TextMatrix(i,0)="上月"&vbCrLf&"结存数量"'//换行
.FixedAlignment(0)=4
Nexti
Fori=0To1
.TextMatrix(i,5)="月末结存"
.FixedAlignment(5)=4
Nexti
Fori=1To4
.TextMatrix(0,i)="本月进销存数量"
.ColAlignment(i)=4
Nexti
.MergeCells=flexMergeFree
'.MergeCells=flexMergeFixedOnly
.MergeCol(0)=True
.MergeRow(0)=True
.MergeCol(5)=True
EndWith
EndSub
请问:如何使用VSFlexGridPro分级显示和存取数据库中的数据。类似于《让TreeView支持无限级分类》帖子中所介绍的使用树形控件显示和存取数据库的数据。
DimcnasNewADODB.Recordset
DimrsAsNewADODB.Recordset
DimlngYAsLong
DimintTAsInteger
cn.open"............"
rs.Open"select系统编号fromtestorderby系统编号",cn
WithVSFlexGrid1
Set.DataSource=rs
.RowOutlineLevel(1)=1
.IsSubtotal(1)=True
ForlngY=1To.Rows-1
intT=Len(.TextMatrix(lngY,0))-Len(Replace(.TextMatrix(lngY,0),".",""))
.RowOutlineLevel(lngY)=intT
.IsSubtotal(lngY)=True
Next
.OutlineCol=0
.OutlineBar=flexOutlineBarSimpleLeaf
EndWith
SetVSFlexGrid1.DataSource=Rs'这一步一定要有,
WithVSFlexGrid1
.DataRefresh
.Sort=flexSortGenericDescending'排序
EndWith
PrivateSubvsflexgrid1_AfterEdit(ByValRowAsLong,ByValColAsLong)
rs.MoveFirst'//rs为记录集
rs.Movevsflexgrid1.Row-1
rs.Edit
Ifvsflexgrid1.text=""Then
rs.Fields(vsflexgrid1.Col-1)=Null
Else
rs.Fields(vsflexgrid1.Col-1)=vsflexgrid1.text
EndIf
rs.Update
endsub
一、增加记录使用for来循环表格行。
fori=1togrid1.rows-1
withrs
.addnew
.fileds(o)=grid1.textmariy(i,0)
.fileds(1)=grid1.textmariy(i,1)
.fileds(2)=grid1.textmariy(i,2)
.fileds(3)=grid1.textmariy(i,3)
.update
endwith
next
二、添加行
grid1.additemrow
三、删除当前行
withgrid1
i=.row
.removeitemi
endwith
四、要显示下拉框,可以使用vsflexgrid中列绑定功能
grid1.colcombolist(1)=grid.buildcombolist(rs,"商品名称")
跟楼上的相比,仅仅是datamode不一样(2-flexDMBoundBatch)
但这样做的优势是非常明显的:可以撤销包括新增删除在内的所有操作,按保存键才写入数据库
PrivateSubCmdDel_Click()
Iffg.Row<>0Thenfg.RemoveItem(fg.Row)
fg.Refresh
EndSub
PrivateSubCmdAdd_Click()
OnErrorResumeNext
Adodc1.Recordset.AddNew
IfErr.Number<>0ThenMsgBoxErr.Description
EndSub
PrivateSubCmdUpdate()
Adodc1.Recordset.UpdateBatchadAffectAllChapters
EndSub
PrivateSubCmdCancel_Click()
Adodc1.Recordset.CancelBatch
fg.DataRefresh
EndSub
PrivateSubForm_Load()
Adodc1.ConnectionString="FILENAME="&App.Path&"/conn.dsn"
Adodc1.LockType=adLockBatchOptimistic
Adodc1.RecordSource="Your_Tablename"
Setfg.DataSource=Adodc1
EndSub
1、打印vsflexgrid可以使用vsprinter打印控件。跟vsflexgrid配套使用效果不错。
2、导出EXECL,可以使用grid.savegrid的方法。
用savegrid的方法,在导出execl时,如果碰到类似于银行帐号的列如:“6465456665”,导到EXECL中就不这样显示了,这个问题还不知道怎么解决??
另外也可以写代码(这个方法比较实用,但慢一些):
DimexcelAppAsExcel.Application
SetexcelApp=NewExcel.Application
OnErrorResumeNext
IfexcelAppIsNothingThen
SetexcelApp=CreateObject("Excel.application")
IfexcelAppIsNothingThen
ExitSub
EndIf
EndIf
excelApp.Visible=True
Me.MousePointer=vbHourglass
excelApp.Workbooks.Add
WithexcelApp.ActiveSheet
DimiAsInteger,jAsInteger
Fori=1ToGrid1.rows
Forj=1ToGrid1.Cols
.Cells(i,j).value="'"&Grid1.TextMatrix((i-1),(j-1))'加上“'”号则可以解决上面savegrid中银行帐号的导出问题。
Nextj
DoEvents
Nexti
EndWith
Me.MousePointer=vbDefault
SetexcelApp=Nothing
EndSub
EXCEL同Vsflexgrid通过
最近很多的朋友,都想知道EXCEL怎样同VSflexgrid交换数据。
实际上,利用“复制”、“粘贴”菜单即可实现。具体如下:
(1)在Vsflexgrid上弹出右键菜单
PrivateSubgrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,yAsSingle)
ifButton=2ThenPopupMenumnutccd
EndSub
(2)设置各菜单的内容
A复制
Clipboard.Clear
Clipboard.SetTextgrid1.Clip
B剪切
DimrowcAsLong
DimrowzAsLong
DimcolcAsLong
dimcolzAsLong
dimiaslong
dimsaslong
Ifgrid1.Rows=1ThenExitSub
Clipboard.Clear
Clipboard.SetTextgrid1.Clip
Ifgrid1.RowSel>grid1.rowThen
rowc=grid1.row
rowz=grid1.RowSel
Else
rowc=grid1.RowSel
rowz=grid1.row
EndIf
Ifgrid1.ColSel>grid1.ColThen
colc=grid1.Col
colz=grid1.ColSel
Else
colc=grid1.ColSel
colz=grid1.Col
EndIf
Fori=rowcTorowz
Fors=colcTocolz
grid1.TextMatrix(i,s)=""
Next
Next
C粘贴(精华部分)
DimiAsLong
DimsAsLong
DimmAsLong
DimtAsLong
Ifgrid1.Rows=1ThenExitSub
t=Len(Clipboard.GetText)
Ift=0ThenExitSub
Fori=1Tot
IfMid(Clipboard.GetText,i,1)=Chr(9)Thens=s+1
IfMid(Clipboard.GetText,i,1)=Chr(13)Thenm=m+1
Next
Ifs/(m+1)+grid1.Col>grid1.Cols-1Then
grid1.ColSel=grid1.Cols-1
Else
grid1.ColSel=s/(m+1)+grid1.Col
EndIf
Ifgrid1.row+m>grid1.Rows-1Then
grid1.RowSel=grid1.Rows-1
Else
grid1.RowSel=grid1.row+m
EndIf
grid1.Clip=Clipboard.GetText
VSFlexGrid常用属性或方法:
.FixedRows=1'固定几行
.FixedCols=1'固定几列
.Editable=True'允许修改
.AllowUserResizing=flexResizeBoth'可调整行/列
.FocusRect=flexFocusNone'无虚框
.SelectionMode=flexSelectionListBox'焦点选中样式
.BackColor=RGB(255,255,255)'单元背景色
.BackColorSel=vbBlue'单元选择色
.BackColorFixed=RGB(208,192,160)'固定单元色
.BackColorAlternate=RGB(255,250,230)'间隔行背景色
.GridColor=RGB(245,240,210)'单元线条色
.ForeColor=RGB(0,0,0)'单元前景色(字符色)
.RowHeightMin=260'最小行高
.RowHeightMax=800'最大行高
.ColHeightMin=50'最小列宽
.ColHeightMax=3000'最大列宽
.ColWidth(Col)=1000'指定列宽
.RowHeight(Row)=260'指定行高
.TextMatrix(Row,Col)="Text"'指定单元字符
.Text="Text"'选定单元字符
.MergeCol(Col)=True'允许合并列
.MergeRow(Row)=True'允许合并行
.MergeCells=0|1|2|3|4|5|6'合并选项
.Cell(选项准则,Row1,Col1,Row2,Col2)'选择部分的相应准则值
.EditCell'当移动到当前单元时自动选择
.EditSelStart'移动到单元时的光标位置
.MousePointer'设置对象的鼠标指针样式O.A=0到15|99
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
几个特殊的属性方法的使用:
FormatString属性:管道符格式化字符串示例:
下面定义对齐方式同字意,列宽窄同距离
VSG1.FormatString="^中|<左|>右|>右|^中"
+++++++++++++++++++++++++
搜索(查找)表格中符合条件的行:
FindRow属性:该属性返回一个行值
MsgBoxVSG1.FindRow(关键词,[指定行],[指定列],[敏感],[精度])
关键词:String,表示要搜索的字符串
指定行/指定列:Long,表示只在指定的行或列中找
敏感:Boolean,
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
'限制只能在指定列输入(这里默认倒数第2列)
PrivateSubVSG1_BeforeRowColChange(ByValOldRowAsLong,_
ByValOldColAsLong,ByValNewRowAsLong,_
ByValNewColAsLong,CancelAsBoolean)
VSG1.Editable=flexEDKbd
IfVSG1.Redraw<>flexRDNoneAndNewCol<>VSG1.Cols-2Then
Cancel=True
VSG1.SelectNewRow,VSG1.Cols-2
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
限制不能编辑某些列:(这里限制第1列和第3列)
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
VSG1.FocusRect=flexFocusNone
VSG1.Editable=flexEDNone
'SendKeys"{TAB}"
Else
VSG1.Editable=flexEDKbd
SendKeys"{ENTER}"
EndIf
EndSub
或:
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
SendKeys"{RIGHT}"
Else
SendKeys"{ENTER}"
EndIf
EndSub
或:
PrivateSubVSG1_RowColChange()
IfVSG1.Col=1OrVSG1.Col=3Then
VSG1.Editable=flexEDNone
Else
VSG1.Editable=flexEDKbd
VSG1.EditCell'自动选择单元内容
VSG1.EditSelStart=0[选到最前]|1[选到指定]|Len(VSG1.Text)[选到最后]
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
'对齐方式(-1标示所有)
.ColAlignment(-1)=flexAlignLeftCenter|flexAlignCenterCenter|flexAlignRightCenter
示例1:(最后一行的第3列靠右对齐)
VSG1.SelectVSG1.Rows-1,2
VSG1.CellAlignment=flexAlignRightCenter
示例2:
VSG1.Row=VSG1.Rows-1:VSG1.Col=1
VSG1.CellAlignment=flexAlignRightCenter
示例3:
VSG1.Cell(flexcpAlignment,VSG1.Rows-1,1,VSG1.Rows-1,3)=flexAlignRightCenter
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
本对象拖放:
PrivateSubVSG1_MouseDown(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
VSG1.Drag
VSG1.DragIcon=LoadPicture("D:/Icon.ico")
VSG1.DragRowVSG1.RowSel
EndSub
或从其它对象拖:
PrivateSubVSG2_MouseDown(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
VSG2.OLEDrag
VSG1.OLEDropMode=flexOLEDropAutomatic
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PublicSubVSGridCount(OptionalSelRowAsLong,OptionalSelColAsLong)
DimXAsLong,iAsLong
DimHj1,Hj2,Hj3AsString
ConstA1=-922337203685477#,A2=922337203685477#
OnErrorGoToErrTransact
WithfrmFG.VSG1
X=.Rows-1
.MergeCells=flexMergeFree
.MergeRow(X)=True
.Cell(flexcpText,X,0,X,1)="合计"
If.Rows=3Then
.TextMatrix(X,0)=0
.Cell(flexcpText,X,2,X,14)=""
.Cell(flexcpText,X,16,X,17)="¥0.00"
ExitSub
EndIf
'Hj1=Val(.Aggregate(flexSTSum,2,2,X-1,2))
'Hj2=Val(.Aggregate(flexSTSum,2,16,X-1,16))
'Hj3=CurrencyToStr(Hj2)
Fori=2ToX-2
Hj1=Hj1+Val(.TextMatrix(i,15))
IfVal(.TextMatrix(i,16))>0Then
Hj2=Hj2+Val(.TextMatrix(i,15))*Val(.TextMatrix(i,16))
EndIf
Nexti
IfHj2<=A1OrHj2>=A2Then
GoToErrTransact
EndIf
Hj3=CurrencyToStr(Hj2)
.TextMatrix(X,2)=Hj1
.Cell(flexcpText,X,3,X,15)=IIf(Hj3="","",Hj3)
.Cell(flexcpText,X,16,X,17)=Format(Hj2,"¥0.00")
.Cell(flexcpAlignment,X,2,X,14)=flexAlignLeftCenter
'.SelectX,3
'.CellAlignment=flexAlignLeftCenter
IfSelRow>1AndSelCol>0Then.SelectSelRow,SelCol
EndWith
ExitSub
ErrTransact:
MsgBox"你输入的数字过大无法计算!请修改!!!"
EndSub
------------------------------------------------
将数字转换为大写金额的函数:
FunctionCurrencyToStr(ByValNumberAsCurrency)AsString
Number=Val(Trim(Number))
IfNumber=0ThenCurrencyToStr="":ExitFunction
Dimstr1AryAsVariant,str2AryAsVariant
str1Ary=Split("零壹贰叁肆伍陆柒捌玖")
str2Ary=Split("分角元拾佰仟万拾佰仟亿拾佰仟万拾佰")
DimaAsLong,bAsLong'循环基数
Dimtmp1AsString'临时转换
Dimtmp2AsString'临时转换结果
DimPointAsLong'小数点位置
IfNumber<=-922337203685477#OrNumber>=922337203685477#Then
ExitFunction
EndIf
tmp1=Round(Number,2)
tmp1=Replace(tmp1,"-","")'先去掉“-”号
Point=InStr(tmp1,".")'取得小数点位置
IfPoint=0Then'如果有小数点,最大佰万亿
b=Len(tmp1)+2'加2位小数
Else
b=Len(Left(tmp1,Point+1))'包括点加2位小数
EndIf
''先将所有数字替换为中文
Fora=9To0Step-1
tmp1=Replace(Replace(tmp1,a,str1Ary(a)),".","")
Next
Fora=1Tob
b=b-1
IfMid(tmp1,a,1)<>""Then
Ifb>UBound(str2Ary)ThenExitFor
tmp2=tmp2&Mid(tmp1,a,1)&str2Ary(b)
EndIf
Next
Iftmp2=""ThenCurrencyToStr="":ExitFunction
''〓下面为非正式财务算法,可以去掉〓
Fora=1ToLen(tmp2)
tmp2=Replace(tmp2,"零亿","亿零")
tmp2=Replace(tmp2,"零万","万零")
tmp2=Replace(tmp2,"零仟","零")
tmp2=Replace(tmp2,"零佰","零")
tmp2=Replace(tmp2,"零拾","零")
tmp2=Replace(tmp2,"零元","元")
tmp2=Replace(tmp2,"零零","零")
tmp2=Replace(tmp2,"亿万","亿")
Next
''〓上面为非正式财务算法,可以去掉〓
IfPoint=1Thentmp2="零元"+tmp2
IfNumber<0Thentmp2="负"+tmp2
IfPoint=0Thentmp2=tmp2+"整"
CurrencyToStr=tmp2
EndFunction
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cell属性的使用:
Cell的作用是给以选定区块的特定的设置值,具体值可参阅相应属性值。
语法:Cell(条件准则,Row1,Col1,Row2,Col2)=相应准则值
其中的“条件准则”有以下准则常数,根据准则的不同而设置相应准则的值:
flexcpAlignment对齐方式
flexcpBackColor背景色
flexcpChecked选择框
flexcpCustomFormat格式设置
flexcpData日期
flexcpFloodColor颜色
flexcpFloodPercent背景色
flexcpFont字体
flexcpFontBold粗体
flexcpFontItalic斜体
flexcpFontName字体名
flexcpFontSize字体大小
flexcpFontStrikethru删除线
flexcpFontUnderline下划线
flexcpFontWidth字符宽
flexcpForeColor字符色
flexcpHeight高
flexcpLeft左
flexcpPicture添加图
flexcpPictureAlignment图对齐
flexcpRefresh刷新
flexcpSort分类
flexcpText字符
flexcpTextDisplay显示字符
flexcpTextStyle文本样式
flexcpTop返回顶端高,同RowPos和valueMatrix属性
flexcpvalue返回字符值
flexcpVariantvalue返回字符值
flexcpWidth返回单元宽
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
flexSTSum方法:每行增加小计行[这个方法还不会用]语法:
VSG.flexSTSum常数名,
[GroupOnAsLong],:标签列
[TotalOnAsLong],:计算列
[FormatAsString],:格式,例"$0.00"
[BackColorAsColor],:Color
[ForeColorAsColor],:Color
[FontBoldAsBoolean],:False|True
[CaptionAsString],:例"数%s"
[MatchFromAsInteger],:0|1|2|3
[TatalOnlyAsBoolean]:False|True
常数名:
常数常数值说明
flexSTNone0大纲唯一的,没有合计价值
flexSTClear1清除全部的小计
flexSTSum2总数
flexSTPercent3总数的百分比
flexSTCount4行数
flexSTAverage5平均
flexSTMax6最大的
flexSTMin7最小的
flexSTStd8标准偏差
flexSTVar9方差
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MousePointer、MouseIcon鼠标指针的应用:
0=flexDefault
1=flexArrow
2=flexCross
3=flexIBeam
4=flexIcon
5=flexSize
6=flexSizeNESW
7=flexSizeNS
8=flexSizeNWSE
9=flexSizeEW
10=flexUpArrow
11=flexHourglass
12=flexNoDrop
13=flexArrowHourGlass
14=flexArrowQuestion
15=flexSizeAll
50=flexPointerCopy'(&H32)'拖动带拷贝
51=flexPointerMove'(&H33)'拖动
52=flexSizeHorz'(&H34)'左右调整
53=flexSizeVert'(&H35)'上下调整
54=flexHand'(&H36)手型
99=flexCustom'自定义
ConstMA="50,51,52,53,54"
DimxyAsInteger
xy=Val(Text1.Text)
Ifxy>15Andxy<>99AndInStr(MA,xy)=0Thenxy=15
VSG1.MousePointer=xy
Ifxy=99Then
VSG1.MouseIcon=LoadPicture("C:/icon/Icon.ico")
EndIf
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
单击列头将列互相拖动调换:
方法一:
VSG1.ExplorerBar=flexExMove'2这是最简单的方法了
注意这个属性在VB属性表中只设置了0、1、2、3、5、7、8种常数值
ExplorerBar属性(value=0|1|2|3|5|7|8):
0-flexExNone:默认,单击列头选择整列,单击行头选择整行
1-flexExSort:单击列头可正反排序该列,单击行头选择整行
2-flexExMove:单击列头可交换列顺序,单击行头选择整行
3-flexExSortAndMove:具有1和2的功能
4:单击列头可正反排序该列并在列头显示相应箭头,单击行头选择整行
5-flexExSortShow:好像与4相同也
6:具有2和4的功能
7-flexExSortShowAndMove:好像与6相同也
8-flexExMoveRows:单击列头选择整列,可拖动行
9:单击列头可正反排序该列,可拖动行
10:可拖动行与列
11:可排序列及拖动行列
12:可排序列并在列头显示相应箭头,还可拖动行
13:同12。
14:除12功能外,可拖动列
15:同14。
方法二:
PrivateSubVSG1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Dimr%,c%
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Then
VSG1.Tag=c
VSG1.Cell(flexcpBackColor,0,c)=vbYellow
VSG1.MousePointer=flexPointerMove
EndIf
EndSub
PrivateSubVSG1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfLen(VSG1.Tag)Then
Dimr%,c%,p%
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Thenp=flexPointerMove
IfVSG1.MousePointer<>pThenVSG1.MousePointer=p
EndIf
EndSub
PrivateSubVSG1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfLen(VSG1.Tag)Then
Dimr%,c%,target%
target=VSG1.Tag
VSG1.Cell(flexcpBackColor,0,target)=0
VSG1.Tag=""
VSG1.MousePointer=0
r=VSG1.MouseRow
c=VSG1.MouseCol
Ifr=0Andc>0Andc<>targetThen
VSG1.ColPosition(target)=c
EndIf
EndIf
EndSub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VSFlexString控件属性一览表
CaseSensitive???
Error失败时取得错误信息
Index索引
MatchCount取得与检索条件相一致的字符串数量
MatchIndex设定与检索条件相一致的字符串的索引
MatchLength取得与检索条件相一致的字符串长度
MatchStart取得与检索条件相一致的字符串起始位置
MatchString取得与检索条件相一致的字符串
Name
Object
Parent
Pattern设定检索条件
Replace设定置换字符串
Soundex取得代表当前检索字符的声音代码
Tag
TagCount取得与检索条件相一致的标签数量
TagIndex在多个标签情况下,设定/取得与检索条件相一致的标签索引
TagLength取得与检索条件相一致的标签长度
TagStart取得与检索条件相一致的标签起始位置
TagString取得与检索条件相一致的标签的字符串
Text设定成为检索对象
Version取得FlexString的版本号
--------------------------------------------------------
MSFlexGrid与VSFlexGrid的单元格合并例子:
PrivateSubForm_Load()
DimiAsLong
Withfg
.WordWrap=True
.Rows=6
.Cols=6
.FixedRows=2
.FixedCols=0
.ColWidth(0)=1500
.RowHeight(0)=300
.RowHeight(1)=300
.TextMatrix(1,1)="进货"
.TextMatrix(1,2)="销售"
.TextMatrix(1,3)="退货"
.TextMatrix(1,4)="结存"
Fori=1To.Rows-1
.RowHeight(i)=300'设置行高
Nexti
Fori=0To1
.TextMatrix(i,0)="上月"&vbCrLf&"结存数量"'//换行
.FixedAlignment(0)=4
Nexti
Fori=0To1
.TextMatrix(i,5)="月末结存"
.FixedAlignment(5)=4
Nexti
Fori=1To4
.TextMatrix(0,i)="本月进销存数量"
.ColAlignment(i)=4
Nexti
.MergeCells=flexMergeFree
'.MergeCells=flexMergeFixedOnly
.MergeCol(0)=True
.MergeRow(0)=True
.MergeCol(5)=True
EndWith
EndSub
请问:如何使用VSFlexGridPro分级显示和存取数据库中的数据。类似于《让TreeView支持无限级分类》帖子中所介绍的使用树形控件显示和存取数据库的数据。
DimcnasNewADODB.Recordset
DimrsAsNewADODB.Recordset
DimlngYAsLong
DimintTAsInteger
cn.open"............"
rs.Open"select系统编号fromtestorderby系统编号",cn
WithVSFlexGrid1
Set.DataSource=rs
.RowOutlineLevel(1)=1
.IsSubtotal(1)=True
ForlngY=1To.Rows-1
intT=Len(.TextMatrix(lngY,0))-Len(Replace(.TextMatrix(lngY,0),".",""))
.RowOutlineLevel(lngY)=intT
.IsSubtotal(lngY)=True
Next
.OutlineCol=0
.OutlineBar=flexOutlineBarSimpleLeaf
EndWith
SetVSFlexGrid1.DataSource=Rs'这一步一定要有,
WithVSFlexGrid1
.DataRefresh
.Sort=flexSortGenericDescending'排序
EndWith
相关推荐
vsflexgrid技巧,好好研究研究用处很大
VSFlexGrid在vb中的使用技巧;表格里的数据可以复制、粘贴、直接输入。
一个有用的控件,vsflexgrid8.0,用于VB编程。
VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1VSFlexGrid7.1...
VSFlexGrid中文手册.txt VSFlexGrid中文手册.txtVSFlexGrid中文手册.txt VSFlexGrid中文手册.txt VSFlexGrid中文手册.txt
vsFlexGrid强大的表格控件,是工业控制常用的表格处理,控件中转暂存用
实现 VSFlexGrid 控件的 复制 粘贴
vsflexgrid 控件 vsflexgrid 控件 vsflexgrid 控件
VB VSFLEXGRID的TreeNode效果
vsflexgrid控件写的一个查询软件,帮助大家提高使用技巧
当前官网最新版是ComponentOne Studio? for ActiveX 2014 V3,包括下列几个组成... VSFlexGrid Query SizerOne True DataControl True DBInput True DBList VSSPELL VSVIEW Classic VSVIEW Reporting WebChart
VsFlexgrid工程
VSFlexGrid Pro是MSFlexGrid的升级,提供全部的特征,用于创建灵活、强壮的前端数据库应用程序。用许多新的方法显示、编辑、格式化、组织、汇总和打印列表数据,在您的项目中定制动态数据的显示和表达。您能够创建...
VSFlexGrid Pro 7.0 是一功能强大的数据表格控件,高速、紧凑、灵活、轻便、无须依赖任何应用工具,支持数据化格式选项,能将表格列连接到图象列和墙纸属性上以提高应用工具的实现程度。如果应用工具无须数据库的...
如果应用工具无须数据库的支持,如果你的应用程序不需要数据库的支持,那么使用VSFlexGrid Pro新的非绑定版本可以使应用程序的尺寸最小,而且发布应用程序时也不需要发布相应的ADO动态链接库。 VSFlexGrid Pro 7.0可...
VB6+VsflexGrid做的程序,包括编辑输入,保存,查询,打印等,基本覆盖了VB+ADO编程(数据库连接+操作),结合Vsflexgrid的使用
vsflexgrid表格控件使用说明,详细解释事件,方法,属性
vsflexgrid 官方实例 ComponentOne Studio.NET C1flexgrid 包括其他的控件官方实例包含vsflexgrid ComponentOne C1flexgrid vb.net C#
仿 VB属性页的例程, 调用 VSFlexGrid实现 电脑需要提前安装VSFlexGrid8控件
VSFlexGrid Pro Build 7.0.0.12