怎么動態加載multiline的text控件
發表時間:2023-08-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]我剛開始在csdn的vb論壇里看到這個帖子的時候,想了很久都沒有找到解決方法。后來看zy910寫到“由于Edit控件的設定(只能在創建窗口時設置風格,創建后不能修改)所以TextBox的MultiL...
我剛開始在csdn的vb論壇里看到這個帖子的時候,想了很久都沒有找到解決方法。后來看zy910寫到“由于Edit控件的設定(只能在創建窗口時設置風格,創建后不能修改)
所以TextBox的MultiLine屬性實現原理是:先清除原有的Edit,再創建一個新的Edit
這在設計時是可行的。但在運行時,會導致文本框相關數據的丟失,甚至會因不安全的代碼導致非法操作,所以M$將TextBox的MultiLine屬性設置成運行時只讀”,那么通過直接使用textbox控件是無法滿足要求的了。
其實我們可以找到一個替代的方法,微軟給我們提供了一組無窗口控件庫。所謂“無窗口控件”是見名知義,是沒有無窗口,因而沒有hwnd屬性。這個庫在主要語言的參考文檔中沒有提到,它必須手工從common\Tools\vb\Winless目錄下安裝。安裝的方法是將這個目錄復制到硬盤上,用regsvr32或vb中對它進行注冊,然后雙擊Mswless.reg,它創建使activex控件對vb環境可用的注冊關鍵字。注冊完畢后,從按Ctrl+T從可用的Active控件列表中選取Microsoft Windowless Control 6來把函數庫加載到IDE中。
使用windowless函數庫的好處是在運行時沒有內部控件的限制,事實上所有的屬性都可以在運行時改變。這個庫中包括TextBox的無窗口版—MSWLess.WLText。也就說我們可以通過動態加載這個控件,來實現動態添加multiline屬性的text控件。
Dim WithEvents TxtEditor As MSWLess.WLText
Private Sub Command1_Click()
Set TxtEditor = Controls.Add("MSLess.WLText", "txtEdit")
TxtEditor.MultiLine = True
TxtEditor.ScrollBars = wlBoth
TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight
TxtEditor.Visible = True
End Sub
注意:“工程屬性”中“刪除有關未使用的active控件的信息”的復選框不要選。