2009-03-06 71 views
1

我正在嘗試更改舊的VB6應用程序的顏色主題(使它看起來更現代一點!)。VB6更改窗體上每個控件的顏色

有人可以告訴我如何改變窗體上每個控件的背景顏色,而不必爲每個控件(標籤,按鈕,框架等)進行更改。

我有大約50個表單,都包含這樣的控件,並且爲代碼中的每個表單手動執行此操作需要一個時間!

我也打開更好的建議和想法如何我可以皮膚/主題VB6應用程序?

在此先感謝

回答

5

你可以爲每一個做一個,並消除你不想要的控件。

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 
1

你可以通過循環控件集合,並設置每個的背景做在運行時。這會給你更改主題的靈活性。

您也可以通過源文件,解析出控件並輸入/更改所需的背景顏色。這種方法可能更多的工作,獎勵較少。

+0

我wa nt可以在運行時執行此操作,以便我可以在一個位置爲顏色設置單個值。謝謝 – Belliez 2009-03-06 11:41:20

+0

在這種情況下,創建一個Theme類,在加載時將每個表單傳遞給它,並將所有顏色/主題邏輯放在那裏。如果你將它構建爲一個單獨的COM DLL,你可以重新使用和/或推送給社區 – MrTelly 2009-03-06 11:51:46

+0

我已經完成了使用下面答案中的代碼。但是,我似乎無法使用戶控件以這種方式工作! – Belliez 2009-03-06 14:33:32

0

它現在已經有好幾年了,但是沒有透明的背景色嗎?

將所有標籤設置爲透明背景,並且只需要設置表單顏色一次。

+0

這會做標籤,但不是其他控件。 http://msdn.microsoft.com/en-us/library/aa245036(VS.60).aspx OP提及不支持透明的文本框和框架 – MarkJ 2009-03-07 07:44:08

6

.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在發表的評論

有用的鏈接:Form Description Properties

1

只是爲了完整性...

ssCheck不具有背景色屬性,並使用上述將產生錯誤方法

〜Mike〜