我正在嘗試更改舊的VB6應用程序的顏色主題(使它看起來更現代一點!)。VB6更改窗體上每個控件的顏色
有人可以告訴我如何改變窗體上每個控件的背景顏色,而不必爲每個控件(標籤,按鈕,框架等)進行更改。
我有大約50個表單,都包含這樣的控件,並且爲代碼中的每個表單手動執行此操作需要一個時間!
我也打開更好的建議和想法如何我可以皮膚/主題VB6應用程序?
在此先感謝
我正在嘗試更改舊的VB6應用程序的顏色主題(使它看起來更現代一點!)。VB6更改窗體上每個控件的顏色
有人可以告訴我如何改變窗體上每個控件的背景顏色,而不必爲每個控件(標籤,按鈕,框架等)進行更改。
我有大約50個表單,都包含這樣的控件,並且爲代碼中的每個表單手動執行此操作需要一個時間!
我也打開更好的建議和想法如何我可以皮膚/主題VB6應用程序?
在此先感謝
你可以爲每一個做一個,並消除你不想要的控件。
Dim frmThing as Form
Dim ctlThing as Control
For Each frmThing In Forms
frmThing.BackColor = vbYellow
For Each ctlThing In frmThing.Controls
If (TypeOf ctlThing Is TextBox) Or _
(TypeOf ctlThing Is CheckBox) Or _
(TypeOf ctlThing Is ComboBox) Then
ctlThing.BackColor = vbYellow
End If
Next
Next
你可以通過循環控件集合,並設置每個的背景做在運行時。這會給你更改主題的靈活性。
您也可以通過源文件,解析出控件並輸入/更改所需的背景顏色。這種方法可能更多的工作,獎勵較少。
它現在已經有好幾年了,但是沒有透明的背景色嗎?
將所有標籤設置爲透明背景,並且只需要設置表單顏色一次。
這會做標籤,但不是其他控件。 http://msdn.microsoft.com/en-us/library/aa245036(VS.60).aspx OP提及不支持透明的文本框和框架 – MarkJ 2009-03-07 07:44:08
.frm文件只是標準的ANSI文本文件。控制的背景顏色屬性應該是這樣的: -
BackColor = &H80000005&
(注意:上面是一個系統的顏色,但你可以通過使用低3個字節和離開高字節0指定RGB顏色)。
控制這樣的標籤是這樣的: -
Begin VB.Label Label1
Caption = "Hello:"
Height = 285
Left = 90
TabIndex = 3
Top = 480
Width = 1305
End
這樣的任務可以通過詞彙解析.FRM文件和插入(或更換)的背景色屬性行來完成。
編輯:
通過 MarkJ在發表的評論只是爲了完整性...
ssCheck不具有背景色屬性,並使用上述將產生錯誤方法
〜Mike〜
我wa nt可以在運行時執行此操作,以便我可以在一個位置爲顏色設置單個值。謝謝 – Belliez 2009-03-06 11:41:20
在這種情況下,創建一個Theme類,在加載時將每個表單傳遞給它,並將所有顏色/主題邏輯放在那裏。如果你將它構建爲一個單獨的COM DLL,你可以重新使用和/或推送給社區 – MrTelly 2009-03-06 11:51:46
我已經完成了使用下面答案中的代碼。但是,我似乎無法使用戶控件以這種方式工作! – Belliez 2009-03-06 14:33:32