Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: 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 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-1098046049
vecna
2004-10-18 00:47
2004.11.07
порядок инициализации пропертей


1-1098863806
ызфт
2004-10-27 11:56
2004.11.07
Запутался в ООП


3-1097070131
Пуртик
2004-10-06 17:42
2004.11.07
Как ускорить закачку?


1-1098270188
oleg_
2004-10-20 15:03
2004.11.07
подскажите, как задать название документа word


1-1098624271
denis24
2004-10-24 17:24
2004.11.07
strringlist and strings