2012-06-19 99 views
1

我使用的是TableCombo,當我按下下拉按鈕時,會顯示所有項目的列表。我想達到目前選定的行在此列表中未突出顯示(因爲我根據項目類型使用不同的背景顏色,並且突出顯示隱藏所選項目的背景顏色)。我曾嘗試使用SWT.NO_FOCUSSWT.HIDE_SELECTION標誌創建表格,但未刪除高亮顯示。有任何想法嗎?SWT TableCombo禁用選定項目的高亮顯示

我試圖找出像在鞦韆熒光筆,但我還沒有成功

回答

1

我剛剛發現this thread,這幾乎回答我的問題。對於SWT.FULL_SELECTION高亮由OS自動處理 - 請參閱Win32上的Table.CDDS_ITEMPOSTPAINT(NMLVCUSTOMDRAW nmcd, int wParam, int lParam)

但是,這種行爲可以通過樣式常量來修改。對我來說,正確的解決方案是使用SWT.FULL_SELECTION(可以選擇整行)和SWT.NO_FOCUS(不使用深藍色高亮)和SWT.HIDE_SELECTION(隱藏所選項目的默認灰色背景顏色)標誌。

不幸的是,HIDE_SELECTION標誌不被SWT Tree支持。

+0

太棒了!沒有等待......它似乎不適用於'Table' /'TableViewer's .. U_U – Campa

0

正如this SO answer建議,人們可以禁用轉嫁到SWT.EraseItem事件:

table.addListener(SWT.EraseItem, new Listener() { 
    @Override 
    public void handleEvent(Event event) { 
     event.detail &= ~SWT.SELECTED; 
    } 
}); 

table是SWT表我從我的JFace TableViewer得到。不確定關於TableCombo API。