2012-05-09 59 views
2

我試圖用拉撒路ExtPascal庫(包裝輪ExtJS的)位置按鈕(TEXT按鈕)。我想根據按鈕的文本和字體來設置按鈕的寬度。我曾嘗試和的getWidth和JSExpression的ExtUtilTextMetrics各種組合,但回來的答案是一樣的東西-420,000。如何得到一個字符串的文本寬度ExtPascal

這可能是相關的,我是無法獲得的字體使用這樣的呼叫改變:

JSCode('style:{"font-size":"'+ FontSize +'px","font-family":"Tahoma"}'); 

,但我能得到這樣的唯一效果是,按鈕較高,如果我設置字體足夠大,但按鈕的文本呈現在原始小字體中。

於是我使出把風格融入獲取傳遞到按鈕的Text屬性字符串,用這個表達式:

result := '<b style="font-size:1.4em;font-family=sans-serif;color:rgb(14,63,138);">' + s + '</b>'

誰能幫我制定出確切的文本寬度?

TIA 馬克

回答

0

起初,我不知道ExtPascal也不拉撒路。

相信該解決方案是非常簡單的。 只能用JavaScript來完成。

步驟: 1.創建一個隱藏的股利。

當你需要一些文本的寬度, 1集文字,fontSize的,並且fontFamily隱藏的股利。 2.設置隱藏的div的div可見 3. GET寬度。 4.將div設回隱藏。

在代碼:

<html> 
<head> 
    <script> 
     function getWidth(text, fontSize, fontFamily) 
     { 
      var element = document.getElementById('ruler'); 

      element.style.fontSize = fontSize; 
      element.style.fontFamily = fontFamily; 
      element.style.display = "inline"; 
      element.innerHTML = text; 

      var width = element.offsetWidth; 
      document.getElementById('width').innerHTML = width; 
     } 
    </script> 
    <style> 
     div#ruler 
     { 
      display : none; 
     } 
    </style> 
</head> 
<body onload="getWidth('Test', '13', 'Verdana');"> 
    <div id="ruler"></div> 
    <div id="width"></div> 
</body> 
</html> 

它也可以與ExtJS的,但這是獲取文本的寬度,最簡單的方法。

希望這會有所幫助。

0

在ExtJS的使用有幫助TestMetrics類是這樣的:

var textWidth = 
    Ext.util.TextMetrics.measure(
    extTextfield.getEl().dom, 
    text). 
    width; 
相關問題