Вниз
Скачать: CL | DM;

Красивое обрезание длинных строк в ListBox...   Найти похожие ветки 

 
Gear   (2004-10-25 00:46) [0]

Пожалуйста, приведите пример кода, который сможет выполнить красивое обрезание длинных строк в ListBox. Например:

Никола...
Васили...
Саша
Петр
Алекса...


 
Вася (типа)   (2004-10-25 07:08) [1]

Обрезаем что? Что визуально не влазит?

Ну наверное примерно так. Не проверял, просто накидал, бумаю будет понятно куда копать... Куда это лучше приткнуть - ну не знаю. Наверное - на отрисовку можно.

var
  w: Integer;  // ширина клиентской части
  i: Integer;
  s: String;   // временная строка

begin
...
  w := ListBox1.ClientRect.Right;
  if ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[<текущее>]) > w then
  begin
    for i := Length(ListBox1.Items.Strings[<текущее>])-1 downto 1 do
    begin
      s := Copy(ListBox1.Items.Strings[<текущее>], 1, i) + "...";
      if ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[<текущее>]) <= w then
        Break;  // нашли удовлетворяющую длину, строка - в s
    end;
    ... выводим текст из s - он как раз влазит и содержит точки ...
  end
  else
    ... выводим полностью Items.Strings[<текущее>], т.к. оно изначально полезло ...


Ну тут много недоделок в коде: а что, если три точки не лезут? Ну и проч. Да и оптимизировать можно. Но идея, надеюсь, понятна.


 
Юрий Зотов ©   (2004-10-25 07:26) [2]

Функция DrawText с установленным флагом DT_END_ELLIPSIS все сделает сама.


 
kostan ©   (2004-10-25 07:28) [3]

да запихнуть куда нибудь в процедуре ...DrawItem

смотри help по : procedure TForm1.ListBox1DrawItem(........

может не совсем то - но можно все нарисовать:\



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
1-1098423191
denis24
2004-10-22 09:33
2004.11.07
О strringlist и listbox


14-1097656240
Семен Сорокин
2004-10-13 12:30
2004.11.07
Пейнтбол


1-1098520923
Ramon
2004-10-23 12:42
2004.11.07
Динамически созданные пункты меню


14-1098333339
wisekaa
2004-10-21 08:35
2004.11.07
Поздравляю всех с 35 летием Всемирной Паутины


1-1098377903
Kolan
2004-10-21 20:58
2004.11.07
ComboBox - Ctl3D




   Наверх