针对MSHFlexGrid的一系列通用方法-项目中实践代码分享
1.给MSHFlexGrid填充数据通用方法
'自定义报表填充程序 fgrid
Public Function ShowformfData(Resultset As ADODB.Recordset, ary As Variant, fg As MSHFlexGrid) As Variant
Dim cl As field
Static GridSetup As Boolean
Dim MaxL As Long
Dim Op As Long
Dim rsl As ADODB.Recordset
Dim rows, sl, field_value As Variant
Dim i As Long
Dim j, k As Long 'On Error GoTo ShowDataEH
Set rsl = Resultset
'------------------------------------------
'等ERP系统全部导入到SQL SERVER 中才可用下面两行代码
'如果不连AS400 ,则直接用下面函数
If rsl.EOF Then
Exit Function
End If ShowMSHFlexGrid fg, rsl, ary
Exit Function
'
fg.Clear
fg.Cols =
fg.rows =
fg.ScrollTrack = True
'fg.ScrollTrack = False
Op =
fg.Enabled = True
If rsl.EOF Then
MsgBox ("没有满足条件的记录,请重新修改您的查询条件")
fg.rows =
fg.Enabled = False
Exit Function
Else
fg.Visible = True
For i = To rsl.Fields.count
fg.Cols = fg.Cols +
If i = Then
fg.colwidth() =
Else fg.Col = Op
If rsl.Fields(Op - ).DefinedSize > Then
MaxL =
Else
MaxL = rsl.Fields(Op - ).ActualSize +
End If
If MaxL > Then MaxL =
If MaxL < Then MaxL =
fg.colwidth(fg.Col) = MaxL *
Op = Op +
End If
fg.TextMatrix(, i) = ary(i)
'FG.TextMatrix(0, i) = rsl.Fields(i).Name Next i
'Cols = fg.Cols + 1
'For I = 0 To rsl.Fields.Count
'fg.TextMatrix(0, I) = ary(I)
'Next I
fg.rows =
k =
If Not (rsl.BOF And rsl.EOF) Then
i =
Do While Not rsl.EOF For j = To rsl.Fields.count
If j = Then
fg.TextMatrix(fg.rows - , j) = k
Else If Not IsNull(rsl.Fields(j - ).Value) Then
fg.TextMatrix(fg.rows - , j) = Trim(rsl.Fields(j - ).Value)
End If
If rsl.Fields(j - ).Type = adChar Then
fg.ColAlignment(j) =
End If End If
Next j
fg.rows = fg.rows +
fg.TopRow = fg.TopRow +
fg.Refresh rsl.MoveNext
k = k +
Loop
fg.rows = fg.rows - End If End If
If fg.rows > Then
fg.TopRow =
fg.Refresh
End If SetRowColor fg
fg.FixedRows =
fg.row =
fg.Col = 'b:
Exit Function 'ShowDataEH:
' MsgBox err & vbCrLf & Error$
' fg.Visible = False
' Resume b End Function
2.更高效的方法获取是这样的,是今天在项目中必要要解决速度问题才弄出来的,而且即简单又快捷
Dim rsConstitute As ADODB.Recordset txtsql = "select SSFXDM,KCWPDM,XTDWDM,SSZJYL from tabv "
Set rsConstitute = Query(txtsql, msgtext) Set FGridCheck.DataSource = rsConstitute
3.针对MSHFlexGrid的一系列通用方法:
Public Function fgclear(fg As MSHFlexGrid)
'
fg.Clear
fg.rows =
fg.Cols =
fg.FixedRows =
fg.FixedCols =
fg.colwidth() =
fg.colwidth() =
fg.row =
fg.Col =
End Function ' 设置MSHFlexGrid每列的颜色
Public Function SetColColor(fg As MSHFlexGrid)
'
Dim i
fg.FillStyle =
For i = To fg.Cols -
fg.Col = i
If i Mod <> Then
fg.row =
fg.RowSel = fg.rows -
fg.CellBackColor = &HC0FFFF
End If
Next i fg.FillStyle =
fg.row =
fg.Col = End Function ' 设置MSHFlexGrid每列的颜色
Public Function colw(fg As MSHFlexGrid) As String
'
Dim i
Dim S
S = ""
For i = To fg.Cols -
S = S & "fg.ColWidth(" & i & ")=" & fg.colwidth(i) & " '" & fg.TextMatrix(, i) & " " & Chr() & Chr()
Next i
colw = S End Function
Public Sub markfg1(ByRef fg As MSHFlexGrid, lb As Label, countlb As Label, delbutton As CommandButton)
Dim r, c
Dim markdgcount As Integer
r = fg.row
c = fg.Col If r <> Then
If InStr(fg.TextMatrix(r, ), "√") = Then
fg.TextMatrix(r, ) = "√ " & fg.TextMatrix(r, )
fg.Col =
fg.CellAlignment = For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HFF& '红色 '蓝色&H8000000D
Next If countlb.Caption = "" Then
markdgcount =
Else
markdgcount = CInt(countlb.Caption) +
End If
Else
fg.TextMatrix(r, ) = Right(fg.TextMatrix(r, ), Len(fg.TextMatrix(r, )) - )
If Trim(fg.TextMatrix(fg.row, )) = "N" Then
If r Mod = Then
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HE0E0E0
Next
Else
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &HFFFFFF
Next
End If
Else
For i = To fg.Cols -
fg.Col = i
fg.CellBackColor = &H80FF80
Next
End If
If countlb.Caption = "" Then
markdgcount =
Else
markdgcount = CInt(countlb.Caption) -
End If
End If
If markdgcount <> Then
countlb.Caption = markdgcount
lb.Caption = "已选择了 " & CStr(countlb.Caption) & " 条记录!"
delbutton.Enabled = True
Else
countlb.Caption = ""
lb.Caption = ""
delbutton.Enabled = False
End If
End If
End Sub
作者:王春天 2013.11.14 地址:http://www.cnblogs.com/spring_wang/p/3423182.html
针对MSHFlexGrid的一系列通用方法-项目中实践代码分享的更多相关文章
- Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够分析我们的项目文件. 作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 R ...
- Hystrix在项目中实践
Hystrix在项目中实践 https://mp.weixin.qq.com/s/4Fg0COnWRB3rRWfxbJt7gA
- 动态调用WebService 通用方法Moss 中 传统开发中都可用。
WebService是啥大家都知道了,这里不做过多的解释.通常我们使用WebService的做法基本都是在我们的项目中添加Web引用的方式,首先找到WebService的地址,然后定义命名空间,这样会 ...
- 最新广商小助手 项目进展 OpenGL ES 3D在我项目中引用 代码太多只好选重要部分出来
package com.example.home; import java.io.IOException; import java.io.InputStream; import javax.micro ...
- 高质量代码优化!谈谈重构项目中if-else代码的几点建议
switch if - else只适合在3层之内使用 当条件判断较多时,可以首先考虑使用switch interface 当判断条件还可能动态增加时,可以考虑将switch进一步优化,引入接口inte ...
- [git]安装git-pylint-commit-hook提高python项目中的代码质量
什么是'git-pylint-commit-hook' 我在工作中,团队为了保证代码和提高代码的质量,要求每个项目都要求安装git-pylint-commit-hook,它是个钩子,会在你提交代码到本 ...
- 吐槽一下项目中的代码坏味道:滥用java常量
我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...
- 使用eslint将项目中的代码修改统一的缩进
背景 继承了组里师兄师姐写的项目的前端代码,但是是两个人写的,有两格缩进的,有四格缩进的,有字符串外用单引号的,有用双引号的. 于是搜索了一下,可以用eslint强制转化. eslint在github ...
- js数组高阶方法reduce经典用法代码分享
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
随机推荐
- ajax 二级联动与springmvc 交互
html 测试可以使用 <div class="pageButton" style="height: 60px;margin: 10px;line-height: ...
- 请用js去除字符串空格?
方法一:使用replace正则匹配的方法 去除所有空格: str = str.replace(/\s*/g,""); 去除两头空格: str = str.replace(/^\s* ...
- 解决 nfs挂载错误wrong fs type, bad option, bad superblock
yum install nfs-utils mount -t nfs 192.168.1.153:/taimei /taimei
- cocos2d-js 越来越慢的定时器schedule 制作不变慢的定时器
对于动画控制,可能一点误差,大家不会察觉,但如果多次循环累积或网络同步等,大家就会很清楚意识到schedule的误差问题. 首先做一个例子证明一下: var InaccuracyTestLayer = ...
- 阿里DRUID数据源
Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能. https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81 ...
- V-rep学习笔记:外部函数调用方式
The remote API functions are interacting with V-REP via socket communication in a way that reduces l ...
- mysql保留2位小数字段如何设置 浮点数
保留2位小数字段如何设置 方法1: select cast(avg(75.3333333) as decimal(10,2)) as '平均分' );#format第一个参数传递浮点数
- Axure 实现批量的勾选和反选
百度网盘:http://pan.baidu.com/s/1gf4RR2b 1.如何实现批量的勾选和反选的操作? 2.步骤 1)创建3个复选框.2个按钮(全选/反选) 2)设置全选按钮点击事件——选中“ ...
- Javascript Get or Set Checked Radio Value
Description This pair of Javascript function can get or set the checked value of a group of radio bu ...
- Ubuntu x86-64汇编(4) 数值操作指令
整数乘法指令 Integer Multiplication 对于有符号数的乘法有特殊的规则, 因此无符号数乘法和有符号数乘法对应着不同的指令mul和imul. 乘法会产生两倍尺寸的数值结果, 即两个n ...