2018年2月27日 星期二

讓 ComboBox 的每個項目顯示不同顏色

在一般的應用程式中,使用 ComboBox 提供下拉選單的功能,讓使用者選擇不同項目,一般而言, ComboBox 的項目沒有什麼特別的,但在特定的應用程式中,有時候會希望每個項目有一些效果呈現,例如:
  • 每個項目都能有個 icon 對應
  • 每個項目的文字顏色可以不一樣
第一個需求,FireMonkey的 TComboBox已經幫我們透過 images (TImagelist) 提供了,所以在本篇文章裡面不討論。

第二個需求,則需要加一些程式碼跟設定來完成:
  1. 先把 ComboBox 的 DropDownKind 設定成 Custom.
  2. 把 ComboBox 裡面的每個字串設定為不同的顏色, 加入以下程式碼, 可以把第一個項目設定成紅色, 第二個項目設定成藍色.
   ComboBox1.ListBox.ListItems[0].TextSettings.FontColor := TAlphaColorRec.Red;
   ComboBox1.ListBox.ListItems[0].StyledSettings := ComboBox1.ListBox.ListItems
       [0].StyledSettings - [TStyledSetting.ssFontColor];

   ComboBox1.ListBox.ListItems[1].TextSettings.FontColor := TAlphaColorRec.Blue;
   ComboBox1.ListBox.ListItems[1].StyledSettings := ComboBox1.ListBox.ListItems
       [1].StyledSettings - [TStyledSetting.ssFontColor];

設定畫面如下圖:
執行結果如圖:
這樣就完成了,分享給大家.