簡體   English   中英

在vb6中替換表單控件

[英]Replacing form controls in vb6

我們有一個內部按鈕控制,坦白說它很糟糕。 我想替換它,但我不想在我們的項目中使用每個表單並刪除/添加新控件。 在我看來,如果我設計一個新的按鈕,它具有與舊的相同的屬性,那么我應該能夠給它與舊的相同的名稱,只需將vbp文件中的所有參考行替換為點到新的控制。

有沒有人試過這個(更好的是你聽說過一個能為你做的工具)如果是這樣的話,我應該注意什么?

謝謝!

* .vbp文件是您需要更改的位置。 在包含GUI的文件中也引用了所使用的控件庫 - 即形式(* .frm),控件(* .ctl)和屬性頁(* .pag)文件。 這些文件采用純文本格式,您可以在頂部看到引用。 它們看起來像這樣:

Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"

如果新控件是已編譯的OCX,則需要在所有相關文件中添加或更新這些引用。 如果它在同一個項目中我不認為它需要任何參考,如果它在同一個項目組中的另一個項目中,我不確定。 使用新控件保存測試表單以查看。

請注意,您不必保持相同的控件類名稱。 在* .frm / ctl / pag文件中,它們上的各個控件的實例由一個簡單的格式表示,如下所示:

Begin VB.CommandButton Command2 
   Caption         =   "Cancel"
   Height          =   375
   Left            =   2460
   TabIndex        =   1
   Top             =   2400
   Width           =   1455
End

第一行的語法是“Begin LibraryOrProjectName.ClassName NameOfThisInstance”。 因此,如果違規控件的名稱與眾不同,則應該很容易在BASIC源和GUI布局中搜索和替換對它的引用。 您可能需要一個純文本編輯器,可以跨多個文件執行搜索和替換(Notepad ++是一個)。

某些控件屬性存儲如下:

   Picture         =   "frmMain.frx":292F

這些文件對應於* .frx,* .ctx和* .pgx文件,這些文件包含某些控件屬性值的二進制數據。 我不認為這些文件需要改變或導致任何問題。 它們似乎不包含控件名稱。

使用完整編譯(Ctrl + F5)以確保之后在源的部分中沒有問題。

沒試過。 祝好運。

在接受的答案中只添加了一個提示。

如果您需要使用第三方或自定義ActiveX控件替換任何通用 VB控件,則必須替換:

BeginProperty Font

BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}

在嘗試編輯/打開表單時,忽略運行時錯誤713會導致這樣做。

如果塊中沒有BeginProperty語句,則控件使用默認字體,並且不需要此替換。

要查找的另一個方案是OCX中的類是否直接在代碼中引用。

換句話說,如果控件類是ABCButton那么你需要在所有.BAS.CLS文件中查找ABCButton ,並進行適當的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM