2012-12-26 56 views
0

我有一個VB 6控制文件(example。ctl)文件,我的要求是在運行時更改此文件的屬性......基本上有些批量操作...(改變所有的CTL文件的屬性)在VB 6(.ctl文件)中提取控件的屬性

這CTL文件是項目的一部分。這

是否有可能通過代碼改變的屬性,例如 height = 100 width = 200 background = white font = calibri

,爲例如使用批處理文件或c#或vb ?? ...有沒有可用的工具?

+0

人們還寫VB6嗎?爲什麼? –

+1

@lightness,因爲它們擁有數百萬行的VB6,並且沒有明顯的升級路徑到更現代化的平臺,這就是爲什麼。 http://stackoverflow.com/questions/400479/visual-basic-6-0-lives-forever-like-cobol – MarkJ

+0

@MarkJ:當interop存在時,爲什麼你會故意添加這些行? –

回答

2

ctl文件只存在於您的開發環境中。一旦編譯到您的應用程序中,它們將成爲編譯輸出的一部分,您將只能修改根據控制文件中定義的規則實例化的對象的屬性。

如果每個控件都將高度,寬度和背景字體作爲屬性公開,那麼您將能夠按照所需的方式在運行時操作控件。如果你有一個你希望以這種方式操作的控制對象列表,你可以創建一個列表並遍歷它們。

1

我使用的是custom VB6 IDE Add-In以獲得對VBIDE.VBE的引用。然後在即時窗口或公共功能中,所有加載的項目中的所有模塊都可以用代碼進行操作。

註冊GetVBERef.dll,負載Get VBE Reference從zip加載在VB6 IDE,開Project2.vbp和即時窗口鍵入:

For Each oCmp In VBERef.ActiveVBProject.VBComponents: ? oCmp.Name: Next 

(你會得到Module2只因爲在Project2罷了)

您可以在項目中複製/粘貼Module2中的代碼,並添加對Microsoft Visual Basic 6.0 Extensibility的引用。在嘗試&錯誤時,您可以編寫一個公共函數(例如在同一模塊中),以調整所有用戶控件的大小或設置項目組中所有表單的顏色,字體等。

+0

感謝您的示例Addin wqw,我正在尋找不應出現在當前項目/模塊中的內容。第三方(最好是c#)應用程序將打開所有的vb項目,獲取控制文件(.ctl),然後處理它們的屬性,然後關閉vb項目...我猜我需要重寫GetVBRef。 dll在C#中......然後將其包含在另一個可以在VB項目中工作的C#應用​​程序中...... 僅僅包含「Microsoft Visual Basic 6.0 Extensibility」就可以做到這一點? –

+0

您不需要更改現有項目。只需創建一個項目組,其中包括項目和一個實現了「VBERef」的特殊「僅限設計時間」的項目(樣本中的「Project2」)和一個公共函數,該函數將處理項目中的用戶控件。在設計時從即時窗口調用此函數。 – wqw