2015-10-16 37 views
0

我知道有一個方法textwidth來計算字符串的文本寬度。如何計算vb6中的文本寬度

但我們有兩種形式,它有自己的單獨列表框。但是我們要維護一個常見的.bas文件,它包含它的代碼。

例如,讓表單名稱爲form1和form2。寬度可以通過form1.TextWidth(ListBox.list(i))和form2.TextWidth(ListBox.list(i))來計算。

現在的問題是,由於我們正在爲這兩個項目維護一個通用的bas文件, form2項目不知道什麼是form1。

建議我一些想法來獲取字符串的寬度。

總的來說,我需要添加水平滾動條到列表框,如果它超過了字符串的最大寬度。因此,如果maxwidth> listboxWidth,那麼我將調用horizo​​ntalscroll bar方法來啓用它。

回答

0

這工作:) ListBox.Parent.TextWidth(ListBox.List(I))

+0

當然,這不能給出正確的結果,除非ListBox和其家長有完全一樣的字體設置。否則,如手冊中的示例代碼所示,這是顯而易見的方法。 – Bob77

0

您將使用WINAPI功能,使水平滾動條,所以你不會需要從像素做轉換爲緹,對?。

所有你需要的是像這樣的一個功能:

function StringWidth(pStr as string) as long 
    dim sz as SIZE 
    hdc=CreateCompatibleDC(0) 
    oldFont=SelectObject(hdc,ifont.handle) 
    call GetTextExtentPoint32 (hdc,pStr,len(pstr), sz) 
    oldFont=SelectObject(hdc,oldFont) 
    call DeleteDC(hdc) 

    StringWidth=sz.cx 
end function 
+0

這是一個原型不完全工作的功能 – milevyo