Выравнивание в ListBox



Перед тем, как вычислить позицию фразы, необходимо с помощью функции TextWidth вычислить ее ширину.


var
  J, TempInt, LongPrefixLen, CurrPrefixLen: Integer;
begin
  {Вычисляем TextWidth по ключевой строке}
  {Устанавливаем CurrPrefixLen в TextWidth ключевого слова
  строки Indexth}
  LongPrefixLen := 0;
  for J := 0 to ListBox1.Items.Count - 1 do
    with ListBox1.Canvas do
    begin
      TempInt := TextWidth(Copy(Items[J], 1, Pos(KeyString, Items[J] - 1)));
      if LongPrefixLen < TempInt then
        LongPrefixLen := TempInt;
      if J = Index then
        CurrPrefixLen := TempInt;
    end;
  {PrevTextLeft - TextLeft = Где мы хотим вывести новый элемент}
  TextOut(LongPrefixLen - CurrPrefixLen, Y, Items[I]);
end;