|
本帖最后由 roych 于 2011-12-11 15:07 编辑
{:soso_e112:}里面还是用了条件格式,只是用代码实现而已。晚些再看看。
先说说该范例的实现原理:
1、根据自动编号字段,计算当前记录的条数。也就是里面的Rank控件:
=DCount("*","表1","货物ID<='" & [货物ID] & "'")
货物ID为自动编号,自增长类型,因此依次返回1、2、3、4……
2、根据记录所属条数奇偶性,设置条件格式,即里面的当前事件和加载事件代码。代码比较多,这里注释当前事件部分。有需要的话再回帖。
- Private Sub Form_Current()
- '如出错则跳过,继续执行
- On Error Resume Next
- '定义当前记录数(即记录导航器中的数值)
- Dim cuid As Long
- cuid = Me.CurrentRecord
- '定义条件格式
- Dim objfrc As FormatCondition
- Dim ctl As Control
- '对所有控件执行条件格式。
- For Each ctl In Me.Form.Controls
- '更改条件格式1(注意,VB里绝大多数集合都是从0开始的)
- '条件格式类型为:表达式。Rank控件为偶数,且并非当前记录时为浅绿色(详见加载事件)
- Set objfrc = ctl.FormatConditions(0).Modify(acExpression, , "[Rank] Mod 2 = 0 And [Rank] <>" & cuid & "")
- '这个就不解释了,类似于上面。需要注意的是,这两个条件格式顺序不能乱,否则格式会出错。
- Set objfrc = ctl.FormatConditions(1).Modify(acExpression, , "[Rank] = " & cuid & "")
- Next
- End Sub
复制代码 因此,如果需要实现删除前后都能实现条件格式效果的话,请在确认删除后事件中对Rank重新计算:
- Private Sub Form_AfterDelConfirm(Status As Integer)
- Me.Rank.Requery
- End Sub
复制代码 |
|