Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обрезать строку [D7, XP]


ttt ©   (2013-02-25 21:05:00) 

Добрый вечер.

Например, необходимо ограничить "Ваня пошел гулять и не вернулся" 20 пикселями, чтобы получилось "Ваня пошел гулять...".
Есть ли для этого стандартные методы?


ttt   (2013-02-25 23:02:00) [1]


> а в [3] что?


Млё. И доверяй потом переводам, которые добавляют в конец тире.


Dimka Maslov   (2013-02-25 22:57:00) [2]


> Мой запасной вариант :) Мне кажется прорисовывать таким
> методом элементы таблицы не совсем корректно


Допустим стандартный метод есть. Как онбудет работать? Сначала определит, сколько символов влезает в заданную область, потом обрежет и выведедет. Что здесь не совсем корректного?


clickmaker   (2013-02-25 22:46:00) [3]

> не нашел флага, делающего это

а в [3] что?


ttt   (2013-02-25 22:23:00) [4]


> А кто мешает использовать DrawText?

Дык, не нашел флага, делающего это.


clickmaker   (2013-02-25 21:47:00) [5]

> Вдруг есть стандартный метод подобно DT_END_ELLIPSIS

А кто мешает использовать DrawText?


Игорь Шевченко   (2013-02-25 21:20:00) [6]

ttt   (25.02.13 21:14) [3]

В EhLib, по-моему, такое обрезание в гриде сделано. Исходники доступны, можно посмотреть


ttt   (2013-02-25 21:14:00) [7]

Хотя, можно было бы просто нарисовать поверх невлезающего обрезанного текста в конце три точки. НО! Вдруг есть стандартный метод подобно DT_END_ELLIPSIS.


ttt   (2013-02-25 21:09:00) [8]


> while (Canvas.TextWidth(S) > 20) and (Length(S) > 0) do
> SetLength(S, Length(S)-1)

Мой запасной вариант :) Мне кажется прорисовывать таким методом элементы таблицы не совсем корректно :)


Dimka Maslov   (2013-02-25 21:08:00) [9]

while (Canvas.TextWidth(S) > 20) and (Length(S) > 0) do SetLength(S, Length(S)-1)


Наверх

Титульная страница Поиск, карта сайта Написать письмо