Visual Basic 6.0 实战讲座

让您充分发挥 Visual Basic 战力的学习书


本书实用功能预览


如何设定命令钮(CommandButton)的前景颜色?(第 3章, p.98-101)


跟其他控制组件所不同的是命令钮并没有 ForeColor (前景颜色)属性, 所以命令钮并没有设定前景(文字)颜色的功能。 不过这个问题也不是无解,笔者的方法是借助 PictureBox 控制组件来达成目的, 而完成的子程序如下:

' 参数一 Color: 传入颜色
' 参数二 cmd: 传入命令钮的名称
' 参数三 pic: 传入PictureBox的名称
Sub SetCommandForeColor(Color As Long, cmd As CommandButton, pic As PictureBox)
    ' 清除PictureBox的背景
    pic.Cls

    pic.AutoRedraw = True

    ' 将命令钮的BackColor、Font┅等属性设定给PictureBox
    pic.BackColor = cmd.BackColor
    Set pic.Font = cmd.Font
    pic.Width = cmd.Width
    pic.Height = cmd.Height

    ' 设定PictureBox的前景颜色
    pic.ForeColor = Color

    ' 将文字输出于PictureBox中央的位置
    pic.CurrentX = (pic.Width - pic.TextWidth(cmd.Caption)) / 2
    pic.CurrentY = (pic.Height - pic.TextHeight(cmd.Caption)) / 2
    pic.Print cmd.Caption

    ' 清除命令钮原来的标题
    cmd.Caption = ""

    ' 将PictureBox的图像设定给命令钮
    Set cmd.Picture = pic.Image

    pic.AutoRedraw = False
End Sub

使用 SetCommandForeColor 子程序来设定命令钮的前景颜色时,请注意以下几件事情:

  1. 命令钮的Style属性必须在设计阶段先设定成 "1 - 图片外观"。
  2. 将 PictureBox 的 Visible 属性设定成 False, 因为 PictureBox 的用途是帮命令钮产生有颜色的文字, 而不是要显示在窗体上。
  3. 将 PictureBox 的 BorderStyle 属性设定成 "0 - 没有框线"。
  4. 调用 SetCommandForeColor 子程序时, 参数一传入颜色、 参数二传入命令钮的名称、 参数三传入 PictureBox 的名称。
  5. SetCommandForeColor 子程序每次执行时会将命令钮的 Caption 属性设定成 "",因此调用 SetCommandForeColor 之前必须先设定好命令钮的Caption属性,例如:
Command1.Caption = "命令钮的标题"	' 此一叙述不可省
SetCommandForeColor vbRed, Command1, Picture1