Office中国论坛/Access中国论坛

标题: 判断一个窗体里面多个文本框是否相同,不同的文本框里面字体变颜色,怎么操作? [打印本页]

作者: hshzhq    时间: 2016-1-19 11:55
标题: 判断一个窗体里面多个文本框是否相同,不同的文本框里面字体变颜色,怎么操作?
本帖最后由 hshzhq 于 2016-1-19 13:11 编辑

如图,我制作一个窗口左边是普通文本,右边是和某个表对应的,窗口加载时左边等于右边,现在我想修改左边来更新右边,为了防止不知道修改的是左边的哪一个值,我希望只要左边的修改了,颜色就改变,但是如果又改回去,颜色就回复原样,所以思路就是检测左边和右边是否相同,不同的话就改变左边的颜色,左边可有命名为A1、A2、A3、A4等,右边B1、B2、B3、B4等。
要求:1、默认自动检测(非按按钮情况下才执行)A1=B1,A2=B2,A3=B3......,如果出现不相同的,那么A列对于的文本框中的文字就变成红色(随便变个颜色都可以,只要出现变化)。
           2、验证所有A1=B1,A2=B2,A3=B3......是还是否,例如使用if..then语句,那么只需要中间....内容就可以,then后面不需要填写。


作者: access新新新手    时间: 2016-1-19 12:12
最好是有附件,方便别人帮你。
作者: hshzhq    时间: 2016-1-19 13:12
access新新新手 发表于 2016-1-19 12:12
最好是有附件,方便别人帮你。

已经添加了,不过是个类似的access文件。
作者: access新新新手    时间: 2016-1-19 13:51
hshzhq 发表于 2016-1-19 13:12
已经添加了,不过是个类似的access文件。

Private Sub A1_AfterUpdate()
    Me.B1.ForeColor = vbBlack
    If Nz(Me.A1.Value) <> Nz(Me.B1.Value) Then
        Me.B1.ForeColor = vbRed
    End If
End Sub

作者: todaynew    时间: 2016-1-19 13:51
脱裤子放屁,多此一举。

直接用一组非绑定控件完成即可。加载时用Dlookup将数据记录读入到各控件中,在每个控件的更新后事件中比较修改值与数据表的数据是否一致,不一致则将前景色或背景色设置为某个提醒色,否则为默认色。
作者: roych    时间: 2016-1-19 14:06
条件格式
修改完之后才能变色(加载、打开或者编辑时不会变色)。
[attach]57910[/attach]
作者: access新新新手    时间: 2016-1-19 16:43
roych 发表于 2016-1-19 14:06
条件格式
修改完之后才能变色(加载、打开或者编辑时不会变色)。

又学到一招,条件格式

作者: hshzhq    时间: 2016-1-19 22:18
我的按钮里面有两个,一个是确认,一个是取消。这个文字或者背景变色有个问题,就是出现过一次操作之后,关闭窗口后再重新打开,变色的还是变色的,并不是默认加载的时候都是黑白状态。所以既然变了色就必须变回去。我有三部分代码。
  1. Private Sub cmd_取消修改_Click()
  2. Text118 = 销售日期
  3. Combo132 = 代理人
  4. Combo138 = 收货人
  5. Combo144 = 经办人
  6. Combo150 = 销售类型
  7. Combo156 = 快递
  8. Text162 = 快递单号
  9. Text118.ForeColor = 0
  10. Combo132.ForeColor = 0
  11. Combo138.ForeColor = 0
  12. Combo144.ForeColor = 0
  13. Combo150.ForeColor = 0
  14. Combo156.ForeColor = 0
  15. Text162.ForeColor = 0
  16. End Sub
复制代码

上面是取消修改就会回复到原来的文字内容和颜色

  1. Private Sub Form_Load()
  2. Text118 = 销售日期
  3. Combo132 = 代理人
  4. Combo138 = 收货人
  5. Combo144 = 经办人
  6. Combo150 = 销售类型
  7. Combo156 = 快递
  8. Text162 = 快递单号
  9. Text118.ForeColor = 0
  10. Combo132.ForeColor = 0
  11. Combo138.ForeColor = 0
  12. Combo144.ForeColor = 0
  13. Combo150.ForeColor = 0
  14. Combo156.ForeColor = 0
  15. Text162.ForeColor = 0
  16. End Sub
复制代码

上面是指打开窗口加载时,所有的文字都是默认值,而且颜色都是默认的黑色,这样就不会出现下次打开时还是上次修改后的颜色。

  1. Private Sub Text118_AfterUpdate()
  2. If Text118.Value <> 销售日期.Value Then
  3. Text118.ForeColor = 125
  4. Else: Text118.ForeColor = 0
  5. End If
  6. End Sub
复制代码

上面的代码就是表示该文本框文字变色的办法,文字修改变色容易,但是文字修改了就变色,再修改回去又不变色就很麻烦,所有我的销售日期相当于是个原始值,我只是修改Text118文本框的值后,所以使用AfterUpdate,如果修改指后判断是否与默认值不同来变色,所以不算完全意义上的修改就变色,这整个功能用在修改记录的时候防止自己不知道修改的是哪一个内容,所以前景色变色,一看就知道是自己修改过的。当然这里的ForeColor可以改成其他什么颜色都可以。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3