
实现的思路: 在msflexgrid的click事件中写处理代码,在点击的一瞬间把控件移动到当前列并显示出来。
搞坦碧一个窗口,添加msflexgrid命名为flex1添加一个combox窗口中添加下面的代码
(请你自己写flex1的初始化行列代码和添加combox1的项目)
Private Sub Flex1_Click()
with flex1
if .col=4 then
s_SetPosition combox1'调用 s_SetPosition 把combox1 移动到第四列逗信扮
end if
end with
end sub
‘把控件移动到flex1的当前列的过程
Private Sub s_SetPosition(oObj As Object)
Dim i
With Flex1
oObj.Top = .Top + .RowPos(.Row) + 50
If .Col = 5 Then oObj.Top = oObj.Top + 20
oObj.Left = .Left + 50
For i = 0 To .Col - 1
oObj.Left = oObj.Left + .ColWidth(i)
Next i
oObj.Visible = True
oObj.SetFocus
End With
End Sub
'在combox1的失去焦点事件中让他不可见。
Private Sub combox1_LostFocus()
combox1.Visible = False
End Sub
用vb自带的
MSFlexGrid,有个大侠提出如下方案,值得友搏学习。
http://blog.sina.com.cn/s/blog_537e4025010007z2.htmlMSFlexGrid使用技巧(绑定下拉框)转载▼
分类: vb
本来通过ERP中基础分类档案的每级编码规则控制来展现MSFlexGrid控件的使用技巧,大家只要向控件添加一个MSFlexGrid及Combo控件就好了,源码如下:
Option Explicit
Private Sub Combo1_Click()
MSFlexGrid1.text = Combo1.text
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyEscape Then
Combo1.Visible = False
MSFlexGrid1.SetFocus
Exit Sub
End If
If KeyAscii = vbKeyReturn Then
MSFlexGrid1.text = Combo1.text
Combo1.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
Private Sub Combo1_LostFocus()
Combo1.Visible = False
MSFlexGrid1.SetFocus
Exit Sub
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim width, text, Archives
width = Array("400", "2100", "800", "800", "800", "800", "800", "800", "800", "800", "800")
text = Array("序号", "档案名称", "第1级", "第2级", "第3级", "第4级", "第5级", "第6级", "第7级", "第8级", "第9级")
Archives = Array("null"孝告唯, "科目", "项目分类", "固定资产分类", "部门分类", "员工分类", "供应商分类", "客户分类", "销售商分类", "地区分类", "出入库类别巧培", "存货分类", "预留12", "预留13", "预留14", "预留15", "预留16", "预留17", "预留18", "预留19", "预留20")
With MSFlexGrid1
.Rows = 21
.Cols = 11
.FixedCols = 2
.FixedRows = 1
End With
For i = 1 To 9
Combo1.AddItem i
Next i
For i = 0 To 10
MSFlexGrid1.ColWidth(i) = width(i)
MSFlexGrid1.TextMatrix(0, i) = text(i)
Next i
For i = 1 To 20
With MSFlexGrid1
.TextMatrix(i, 0) = i
.TextMatrix(i, 1) = Archives(i)
.RowHeight(i) = 300
End With
Next i
End Sub
Private Sub MSFlexGrid1_Click()
Dim c As Integer, r As Integer
With MSFlexGrid1
c = .col
r = .row
If c >1 And r >0 Then
Combo1.Left = .Left + .ColPos(c) + 50
Combo1.Top = .Top + .RowPos(r) + 50
Combo1.width = .ColWidth(c)
Combo1.text = .text
Combo1.Visible = True
Combo1.SetFocus
End If
End With
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
Call MSFlexGrid1_Click
End If
End Sub
注意事项:1、XListView因为添加了Header,会导致存储的数据+1,所以赋值时需要position-1。补充:当去掉HeaderView时,position不用-1。2、提个建议:上拉加载,最好在onCreate()中就执行setAdapter,然后不论是空数据庆高肆、还是有数据,只用更新适配器就行了。一、XListView1、下载gitHub的地址。或者从这儿下。2、用法导入图中的me.maxwin.view包提供了两个誉轿接口:IXListViewListener:触发下拉刷新,上拉加载。实现此接口时,onLoadMore()用来上拉加载,onRefresh()用来下拉刷新。OnXScrollListener:和原生的OnScrollListener一样,但是在header/footer回滚时也会触发。几个常用方法:setPullRefreshEnable(booleanenable):是否允许下拉刷新setPullLoadEnable(booleanenable):是否允许上拉加载stopRefresh():停止刷新,重置headerviewstopLoadMore():停止加载,重置footerview请求到数据后停止刷新停止加载。setRefreshTime(Stringtime):设置上次刷新的时间onLoadMore():加载时调用的方法。注意第一次进入时不会调用此方法。onRefresh():下拉刷新时调用的方法。3、代码中怎么体现1)实现IXListViewListener接口->2)实现上拉刷新和下拉加载的数据变更->3)念郑更新headerview和footerview,并设置更新时间。[java]viewplaincopy//1、实现IXListViewListener接口mListView.setXListViewListener(this)//2.1onRefresh中实现下拉刷新的数据加载@OverridepublicvoidonRefresh(){//请求数据//更新界面显示[java]viewplaincopyonLoad()}//2.2onLoadMore中实现上拉加载的数据加载[java]viewplaincopy@OverridepublicvoidonLoadMore(){//请求数据//更新界面显示[java]viewplaincopyonLoad()}//3、加载完数据后,复位headerview和footerview,并设置更新的时间。[java]viewplaincopyprivatevoidonLoad(){mListView.stopRefresh()mListView.stopLoadMore()mListView.setRefreshTime("刚刚")}4、xml注意事项当将XListView嵌入到LinearLayout中时,XListView占满全屏时不能再加载。上错误代码:[java]viewplaincopy5、去ScrollView共用这种情况,重写XListView会导致上拉加载时频繁的报错:适配器未更新,不知道咋解决。二、PullToRefresh大部分内容转自鸿洋的博客:这里写上拉加载的任务newGetDataTask().execute()}})3、属性介绍1)ptr:ptrMode="both"支持上拉加载和下拉刷新。disabled禁用下拉刷新和上拉加载。pullFromEnd仅支持上拉加载。manualOnly只允许手动触发。当然通过代码也可设置:lv.setMode(Mode.BOTH)2)ptr:trAnimationStyle="flip"flip:翻转动画;rotate:旋转动画。3)ptr:ptrDrawable="@drawable/ic_launcher"设置图标4)ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。5)ptrListViewExtrasEnabled决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。4、自定义下拉指示器文本内容等效果:在初始化完成PullToRefreshListView后,通过lv.getLoadingLayoutProxy()可得到一个ILoadingLayout对象,这个对象可设置各种指示器中的样式、文本等。[java]viewplaincopyILoadingLayoutstartLabels=mPullRefreshListView.getLoadingLayoutProxy()startLabels.setPullLabel("你可劲拉,拉")//刚下拉时,显示的提示startLabels.setRefreshingLabel("好嘞,正在刷新")//刷新时startLabels.setReleaseLabel("你敢放,我就敢刷新")//下来达到一定距离时,显示的提示默认是上拉和下拉的字同时改变的,如果希望单独改变呢:[java]viewplaincopyprivatevoidinitIndicator(){ILoadingLayoutstartLabels=mPullRefreshListView.getLoadingLayoutProxy(true,false)startLabels.setPullLabel("你可劲拉,拉")//刚下拉时,显示的提示startLabels.setRefreshingLabel("好嘞,正在刷新")//刷新时startLabels.setReleaseLabel("你敢放,我就敢刷新")//下来达到一定距离时,显示的提示ILoadingLayoutendLabels=mPullRefreshListView.getLoadingLayoutProxy(false,true)endLabels.setPullLabel("你可劲拉,拉2")//刚下拉时,显示的提示endLabels.setRefreshingLabel("好嘞,正在刷新2")//刷新时endLabels.setReleaseLabel("你敢放,我就敢刷新2")//下来达到一定距离时,显示的提示}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)