通過設置TListbox的TabWidth屬性,可以輕鬆實現列表框中的多列效果。例如,http://delphi.about.com/cs/adptips2000/a/bltip1200_3.htm如何在Delphi中設置TComboBox的列表框部分的表格寬度
我需要在ComboBox的下拉列表中執行相同的操作,但組合框不會發布任何TabWidth屬性。
任何想法?
通過設置TListbox的TabWidth屬性,可以輕鬆實現列表框中的多列效果。例如,http://delphi.about.com/cs/adptips2000/a/bltip1200_3.htm如何在Delphi中設置TComboBox的列表框部分的表格寬度
我需要在ComboBox的下拉列表中執行相同的操作,但組合框不會發布任何TabWidth屬性。
任何想法?
在以this answer評論你建議業主繪製列表框中的項目你說:
我不知道爲什麼我必須做的是,當需要的功能在列表框已經存在
組合框實際上由三個本地子窗口組成 - 組合框本身,嵌入式編輯和列表框。您可以使用GetComboBoxInfo()
函數來填充COMBOBOXINFO
結構(即TComboBoxInfo
記錄)和有關該控件的信息,並將返回其中的3個HWND
元素。這樣你就可以改變列表框的外觀和行爲。原則上。
對於要使用製表位的列表框,需要設置LBS_USETABSTOPS
樣式標誌。不幸的是,這不能在以後打開,列表框必須與它一起創建。因此,只有當您可以打開列表框中的樣式標誌時纔可以使用該功能,該列表框在組合框的CreateWindowEx()
調用期間創建。 AFAICS只能通過掛接CreateWindowEx()
調用本身,識別創建列表框的內部調用以及更改傳遞的樣式來完成。這意味着代碼的運行時修改,而不是在您的可執行文件中,但在Windows DLL中。
所有者繪製列表項看起來會更容易。
從我所知道的有沒有這麼簡單的方式,這裏TabWidth
,但你可以覆蓋Paint
方法,並自己畫。查看列表框和組合框可能會有所幫助。
我認爲OnDrawItem方法會更有用 – SimaWB 2010-02-19 12:52:07
我想知道爲什麼當必需的功能已經存在於列表框上時我必須這樣做。 – 2010-02-19 14:56:26
感謝您的完整和詳細的解釋,完全解答我的問題。然而,做這件事太費事了。 – 2010-02-21 19:28:45