Главная страница
    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.45 MB
Время: 0.036 c
3-1097150483
Ну чайник я, чайник!
2004-10-07 16:01
2004.11.07
select from select...


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


1-1098634662
DIS
2004-10-24 20:17
2004.11.07
работа с реестром


1-1098761666
Кто---то
2004-10-26 07:34
2004.11.07
Как запретить TShellTreeView обращаться к дисководу ?


14-1098191680
ZEX
2004-10-19 17:14
2004.11.07
требуются программисты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский