找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
宇哥帮你零基础建设外贸独立站
宇哥淘宝虚拟类目-付费微信群
宇哥闲鱼3个月陪跑课
Access数据库-零基础入门课程
Access数据库-自用软件开发课程
Access数据库-即学即用课程
Access数据库-进销存课程
Access数据库-VBA入门课程
Access数据库-陪跑课程
查看: 351|回复: 0

Access数据库编程案例-颜色码数制转换(人教版《信息技术》必修第一册P17例题,基于VB

[复制链接]

115

主题

15

回帖

633

积分

管理员

积分
633
发表于 2024-3-7 14:35:22 | 显示全部楼层 |阅读模式
Access数据库编程案例-颜色码数制转换(人教版《信息技术》必修第一册P17例题,基于VBA)




图1 本案例的效果案例来源介绍
本案例来自于人民教育出版社《信息技术》第17页的1道例题,题干部分如下:
实践活动:颜色码的数制转换
在计算机中,RGB(red,green,blue)颜色值可以表示为十六进制颜色码。例如,颜色值RGB(64,224,208)可记为#40E0D0,其中表示红色的64,表示绿色的244和标识蓝色的208分别对应十六进制数40H、E0H、D0H。
1.将#9400D3、#D2B48C表示成相对应的RGB颜色值
2.使用计算器程序,验证上述结果。
本文对该题目进行了一下修改,利用VBA代码,通过改变RGB数字来更改颜色,并且在窗体进行自动化展示。我把操作代码直接做成了一个软件案例(基于Access数据库)。今天我把本案例的设计过程、代码的逻辑写成一篇技术文案,供大家参考。
本次分享分为以下3个部分:1.需求分解;2.代码层次;3.代码讲解。
1.需求分解
本案例要完成的任务是:自动化的、直观地演示在不同RGB值下的颜色,以及将10进制RGB数字转化为16进制数字。主要需求分解如下:
(1)窗体和控件
本案例要做一个Access窗体,在窗体上设置3个文本框,分别控制RGB的3种颜色,每当更改数字的值就更改指定控件的颜色。


图2 窗体界面
(2)页眉、图片和正方形
本案例页眉、图片背景和正方形的颜色要随着文本框中数字的改变而改变。(3)自动化用最简洁的方法,尽量少的控件,用最直观的方式演示颜色变化效果。
2.代码层次
本案例的所有代码分为核心代码和调用代码。
这样做的好处是比较节省空间,层次比较分明,看得比较清晰。本案例的核心代码不采用模块封装的方法,直接采用子过程Private Sub编程。主要是因为比较简单,不用封装。
(1)核心代码
核心代码功能包括两项:更改文本框里的RGB值,然后页眉、图片背景的颜色也随之自动更改。
更改文本框里的RGB值,然后10进制数字自动转化为16进制数字。这两段代码分别放在一个子过程里,需要的时候进行调用。


图3 核心代码(2)调用代码
调用代码的含义就是在需要的时候运行核心代码。本案例只要更改文本框的数字就直接“召唤”(Call)核心代码。
如果不采用核心代码和调用代码分开的编程模式,代码会比较长还比较乱,尤其不利于操作比较复杂的调用过程。


图4 调用代码
3.代码讲解
本章节讲解一下核心代码的逻辑和调用代码。
(1)核心代码颜色变换代码
是本案例的核心,是第1段核心代码。本段代码全文如下:
  1. Private Sub UpdateRectangleColor()
  2.     Dim RedValue As Integer '先定义三个整型变量,分别代表红绿蓝
  3.     Dim GreenValue As Integer
  4.     Dim BlueValue As Integer

  5.     ' 从文本框获取RGB值
  6.     RedValue = Nz(Val(Text1), 0)
  7.     GreenValue = Nz(Val(Text2), 0)
  8.     BlueValue = Nz(Val(Text3), 0)

  9.     ' 确保RGB值在0到255之间
  10.     If RedValue < 0 Then RedValue = 0
  11.     If RedValue > 255 Then RedValue = 255
  12.     If GreenValue < 0 Then GreenValue = 0
  13.     If GreenValue > 255 Then GreenValue = 255
  14.     If BlueValue < 0 Then BlueValue = 0
  15.     If BlueValue > 255 Then BlueValue = 255

  16.     ' 更新矩形框、图片和页眉的颜色
  17.     Me.Box1.BackColor = RGB(RedValue, GreenValue, BlueValue)
  18.     Me.Image1.BackColor = RGB(RedValue, GreenValue, BlueValue)
  19.     Me.Section(acHeader).BackColor = RGB(RedValue, GreenValue, BlueValue)
  20. End Sub
复制代码


这段代码的含义如下:先设定3个变量RedValue、GreenValue和BlueValue,分别代表红色、绿色和蓝色。
3个变量取值分别来自于三个文本框Text1、Text2和Text3。
需要确保文本框里输入的数字要在0和255之间,如果超出这个范围的数字,数值要么是0要么是255。
3个控件的颜色要随着数字更改而变化,这3个变颜色的控件分别是:
1个正方形Box1、宇哥本人的照片背景颜色Image1、以及窗体的页眉Section(acHeader)。
这3个控件的背景色调用代码都是BackColor。以下是第2段核心代码,10进制转化为16进制的代码:
  1. Private Sub ConvertToHex()
  2.     Dim RedValue As Integer
  3.     Dim GreenValue As Integer
  4.     Dim BlueValue As Integer
  5.     Dim HexColor As String


  6.     ' 从文本框中获取10进制RGB值
  7.     RedValue = CInt(Text1.Value)
  8.     GreenValue = CInt(Text2.Value)
  9.     BlueValue = CInt(Text3.Value)


  10.     ' 将RGB值转换为16进制
  11.     HexColor = Right("00" & Hex(RedValue), 2) & Right("00" & Hex(GreenValue), 2) & Right("00" & Hex(BlueValue), 2)


  12.     ' 在text4中显示16进制颜色值
  13.     Text4.Value = HexColor
  14. End Sub
复制代码


这段代码的含义如下:除了定义红绿蓝3个颜色的变量,再定义第4个变量HexColor
用1个函数Hex,这个函数就是专门做10进制16进制转换的,把红绿蓝3个变量转换为16进制之后合并就OK了。不复杂。这两段代码没有涉及到调用的过程,调用这两段代码要通过控件的操作。
(2)调用代码
调用代码是案例自动化的一部分,不可或缺,完整的调用代码如下:
  1. Private Sub Form_Load() '设定默认的颜色值,浅绿色
  2. Text1 = 200
  3. Text2 = 255
  4. Text3 = 200
  5. Call UpdateRectangleColor
  6. Call ConvertToHex
  7. Me.Refresh
  8. End Sub


  9. Private Sub Text1_AfterUpdate() '文本框更新后触发操作
  10. Call UpdateRectangleColor
  11. Call ConvertToHex
  12. Me.Refresh
  13. End Sub


  14. Private Sub Text1_Change() '文本框更改后触发操作
  15. Call UpdateRectangleColor
  16. Call ConvertToHex
  17. Me.Refresh
  18. End Sub
复制代码


这段代码只举了1个文本框的案例,另外两个文本框操作完全相同,故省略。
我个人比较喜欢文本框“更新后”+“更改”的自动化操作方式,好处是不需要单独设一个按钮控件,只有有更改就自动计算,缺点是代码比较长一些,需要为3个文本框分别设定代码。
你如果愿意可以不用这种思路,加一个按钮控件操作也可以,代码就2行。
第1段代码是设定本案例的默认颜色值,浅绿色。打开这个窗体就直接带入3个文本框的数值。
第2段第3段代码意思是只要文本框有更新有更改,就自动“召唤”(Call)上一章的核心代码,根据3个文本框的数值进行颜色的判定和显示。代码逻辑讲解完毕。很简单很清楚有木有。
总结
本案例重点知识点有3个:
1.掌握Access框架的控件颜色更改的技术。
2.10进制转16进制的Hex函数使用。
3.窗体自动化技术。
用数字控制控件颜色,这件事情VBA编程的技术本身不难,知识点不多。
但是需要重视细节的把控,另外也要理解模块化编程、以及把核心代码和调用代码分开的好处。想学习Access数据库请私聊。
--The End--

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

access开发
Access零基础
Access即学即用
access陪跑
Access进销存

QQ|小黑屋|宇哥编程论坛 ( 京ICP备2022024677号-2|京公网安备11011202100561号 )

GMT+8, 2024-12-23 12:38 , Processed in 0.118174 second(s), 21 queries .

Powered by 宇哥

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表