vb中如何让MSFLEXGRID绑定combobox控件,望高手指教

vb中如何让MSFLEXGRID绑定combobox控件,望高手指教,第1张

不能绑定。但山灶可以实现你说的功能

实现的思路: 在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")//下来达到一定距离时,显示的提示}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8031738.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存