如何用vb保存修改过的颜色?最好对初学者适用的解决方法

Private Sub m11_Click()
CD1.ShowColor
Frame1.BackColor = CD1.Color
Frame2.BackColor = CD1.Color
Frame3.BackColor = CD1.Color
Form1.BackColor = CD1.Color
Label2.BackColor = CD1.Color
Label1.BackColor = CD1.Color
Label3.BackColor = CD1.Color
If CD1.Color = vbWhite Then
Label1.ForeColor = vbBlack
Label2.ForeColor = vbBlack
Frame1.ForeColor = vbBlack
Frame2.ForeColor = vbBlack
Form1.ForeColor = vbBlack
Label3.ForeColor = vbBlack
Frame3.ForeColor = vbBlack
End If
End Sub

这个是我写的更换颜色的很傻的程序,但是发觉,每次进入软件都要更改一次颜色很烦,我就是想实现,更改一次颜色以后,下次打开软件,还是这个颜色,这代码怎么写?我是新手,别搞得太复杂哈,谢谢了
回复1楼:这个代码不行,运行程序后,会出来选择颜色框的,而且还改不了
回复2楼:你这段代码插进去之后,我电脑上d盘生成了一个记事本文件,里面有几个0,但颜色仍然无法保存!!!
回复4楼:已经百度hi联系你了,希望得到你的回复

您好,关于你这个问题我实在不知道你的具体程序是什么样子的。所以,与其我写出一个代码来,不如教你如何写这种程序。

1、在电脑里,颜色是用R、G、B三色组合而成。而在VB下,颜色是以Long类型整数表示的。
一个颜色的RGB值你可以用Windows下的“画笔”取得。而知道一个颜色的RGB值之后,可以用RGB函数获取它的Long类型颜色值。
所谓的:CD1.ShowColor、Frame1.BackColor这些值,其实都是Long类型整数。

以下程序用来以数组保存10种颜色的数组。
Dim tColors() As Long
ReDim tColors(9)
tColors(0)=RGB(0,0,0) '黑色
tColors(1)=RGB(255,255,255) '白色
tColors(2)=RGB(128,128,128) '深灰色
tColors(3)=RGB(192,192,192) '浅灰色
tColors(4)=RGB(255,0,0) '亮红色
tColors(5)=RGB(0,255,0) '亮绿色
tColors(6)=RGB(255,128,0) '亮橙色
tColors(7)=RGB(192,200,255) '淡蓝色
tColors(8)=RGB(255,255,0) '亮黄色
tColors(9)=RGB(128,64,0) '棕色

只要把你的控件颜色对应数组里的一个元素就可以了。
比如:
Frame1.BackColor=tColors(0)
Frame2.BackColor=tColors(1)

2、保存数组到文件。
Dim tColors() As Long
ReDim tColors(x) 'x是你的数组元素数量。
Open "Color.bin" For Binary As #1
Put #1,1,tColors()
Close #1

3、读取数组。
Dim tColors() As Long
ReDim tColors(x) 'x是你的数组元素数量
Open "Color.bin" For Binary As #1
Get #1,1,tColors()
Close #1

只要你灵活运用读写数组和以数组保存颜色的方法,相信你一定能写出这种程序来。

给你写了一个例子:

Private priColors() As Long

Private Sub Command1_Click()
'选择背景颜色按钮
With CommonDialog1
.ShowColor
priColors(0) = .Color
End With
AppColor
End Sub
Private Sub Command2_Click()
'选择前景颜色按钮
With CommonDialog1
.ShowColor
priColors(1) = .Color
End With
AppColor
End Sub

Private Sub Command3_Click()
'储存颜色按钮
SaveColor
End Sub

Private Sub Command4_Click()
'读取颜色按钮
LoadColor
AppColor
End Sub

Private Sub Form_Load()
ReDim priColors(1)
LoadColor
If priColors(0) = priColors(1) Then
priColors(0) = RGB(215, 215, 215)
priColors(1) = RGB(0, 0, 0)
End If
AppColor
End Sub

Private Sub SaveColor()
'保存颜色
Open "Colors.bin" For Binary As #1
Put #1, 1, priColors()
Close #1
End Sub

Private Sub LoadColor()
'读取颜色
Open "Colors.bin" For Binary As #1
Get #1, 1, priColors()
Close #1
End Sub

Private Sub AppColor()
'应用颜色
ObjAppColor Frame1: ObjAppColor Frame2: ObjAppColor Frame3
ObjAppColor Label1: ObjAppColor Label2: ObjAppColor Label3
ObjAppColor Form1
End Sub

Private Sub ObjAppColor(ByRef pObject As Object)
'应用颜色到单个对象
pObject.BackColor = priColors(0)
pObject.ForeColor = priColors(1)
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-04
下面的复制到你代码里应该就可以,代码也不会长
Private Sub Form_Load()
Dim i As Control
CD1.ShowColor
For Each i In Controls
Select Case TypeName(i)
' Case "TextBox"
case ease
i.BackColor = CD1.Color
If CD1.Color = vbWhite Then i.ForeColor = vbBlack
End Select
Next
End Sub
第2个回答  2010-08-05
另加入代码,关闭程序时保存颜色
Private Sub Form_Load()
Dim a As String
If Dir("d:1.txt") = "" Then
Else
Open "d:1.txt" For Input As #1
Line Input #1, a
Frame1.BackColor = a
Line Input #1, a
Frame2.BackColor = a
Line Input #1, a
Frame3.BackColor = a
Line Input #1, a
Form1.BackColor = a
Line Input #1, a
Label3.ForeColor = a
Line Input #1, a
Label2.ForeColor = a
Line Input #1, a
Label1.ForeColor = a
Close (1)
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Open "d:\1.txt" For Output As #1
Write #1, Frame1.BackColor
Write #1, Frame2.BackColor
Write #1, Frame3.BackColor
Write #1, Form1.BackColor
Write #1, Label1.BackColor
Write #1, Label2.BackColor
Write #1, Label3.BackColor
Close (1)
End Sub
第3个回答  2010-08-05
下面俩个过程是我在语音投影圣经中的代码,你只须改一下对象就能使用.

'载入
Dim aa, bb As Integer
Dim DiaoChu()
bb = 0
Open App.Path & "\YuYin.bat" For Binary As #1
'VoiceCB.Text = Input(LOF(1), #1)
Do While Not EOF(1)
Line Input #1, aa
bb = bb + 1
DiaoChu(bb) = aa

If bb = 11 Then Exit Do
Loop

Close #1
On Error Resume Next
TTsApps.VoiceCB.Text = DiaoChu(1) '读出第一行 语音
TTsApps.RateSldr.Value = DiaoChu(2) '读出第二行 语速
SouSoZJ.Combo1(0).ListIndex = DiaoChu(3) '读出第三行 字体
SouSoZJ.Combo1(1).ListIndex = DiaoChu(4) '读出第四行 字号
SouSoZJ.Combo1(2).ListIndex = DiaoChu(5) '读出第五行 行距
SouSoZJ.Combo1(3).ListIndex = DiaoChu(6) '读出第六行 节号
SouSoZJ.Combo1(4).ListIndex = DiaoChu(7) '读出第七行 语言

SouSoZJ.Pictur(0).BackColor = DiaoChu(8) '读出第八行 经文
SouSoZJ.Pictur(1).BackColor = DiaoChu(9) '读出第九行 节色
SouSoZJ.Pictur(2).BackColor = DiaoChu(10) '读出第十行 背景
SouSoZJ.Pictur(3).BackColor = DiaoChu(11) '读出第十一行 标题
Erase DiaoChu() '语句将原来的数组删除。

'保存文件
Open App.Path & "\YuYin.bat" For Output As #1
Print #1, Trim(TTsApps.VoiceCB.Text) '保存到第一行 语音
Print #1, Trim(TTsApps.RateSldr.Value) '保存到第二行 语速
Print #1, Trim(SouSoZJ.Combo1(0).ListIndex) '保存到第三行 字体
Print #1, Trim(SouSoZJ.Combo1(1).ListIndex) '保存到第四行 字号
Print #1, Trim(SouSoZJ.Combo1(2).ListIndex) '保存到第五行 行距
Print #1, Trim(SouSoZJ.Combo1(3).ListIndex) '保存到第六行 节号
Print #1, Trim(SouSoZJ.Combo1(4).ListIndex) '保存到第七行 语言

Print #1, Trim(SouSoZJ.Pictur(0).BackColor) '保存到第八行 经文
Print #1, Trim(SouSoZJ.Pictur(1).BackColor) '保存到第九行 节色
Print #1, Trim(SouSoZJ.Pictur(2).BackColor) '保存到第十行 背景
Print #1, Trim(SouSoZJ.Pictur(3).BackColor) '保存到第十一行 标题

Close #1

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网