Как отсортировать элементы TcxImageComboBox по описанию? - PullRequest
1 голос
/ 18 ноября 2011

Я нашел хороший компонент для реализации списка значений Caption <-> для ComboBox:

Есть ли ComboBox с такими элементами, как TcxRadioGroup?

Единственная проблема: у нее есть свойство Sorted, но это не работает.

Итак, как мне отсортировать элементы TcxImageComboBox?

1 Ответ

3 голосов
/ 18 ноября 2011

Быстрый и грязный метод, должен работать нормально в большинстве случаев:

function CompareItems(AFirst: TcxImageComboBoxItem; ASecond: TcxImageComboBoxItem): Integer;
begin
  Result := AnsiCompareText(AFirst.Description, ASecond.Description);
end;

procedure SortCxComboBoxItems(AItems: TcxImageComboBoxItems);
var
  I    : Integer;
  J    : Integer;
  PMin : Integer;
begin
  AItems.BeginUpdate;
  try
    // Selection Sort (http://en.wikipedia.org/wiki/Selection_sort)
    for I := 0 to AItems.Count - 1 do 
    begin
      PMin := I;
      for J := I + 1 to AItems.Count - 1 do 
      begin
        if CompareItems(AItems[J], AItems[PMin]) < 0 then begin
          PMin := J;
        end;
      end;
      if PMin <> I then 
      begin
        AItems[PMin].Index := I;
      end;
    end;
  finally
    AItems.EndUpdate;
  end;
end;
...