让您充分发挥 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 子程序来设定命令钮的前景颜色时,请注意以下几件事情:
- 命令钮的Style属性必须在设计阶段先设定成 "1 - 图片外观"。
- 将 PictureBox 的 Visible 属性设定成 False, 因为 PictureBox 的用途是帮命令钮产生有颜色的文字, 而不是要显示在窗体上。
- 将 PictureBox 的 BorderStyle 属性设定成 "0 - 没有框线"。
- 调用 SetCommandForeColor 子程序时, 参数一传入颜色、 参数二传入命令钮的名称、 参数三传入 PictureBox 的名称。
- SetCommandForeColor 子程序每次执行时会将命令钮的 Caption 属性设定成 "",因此调用 SetCommandForeColor 之前必须先设定好命令钮的Caption属性,例如:
Command1.Caption = "命令钮的标题" ' 此一叙述不可省 SetCommandForeColor vbRed, Command1, Picture1