![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| s-mike |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 9 Всего: 16 |
Добавлено @ 09:35 Но она немного не тем занимается, она по буквам разбивает, а не по ширине слов. |
|||
|
||||
| tripsin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 10.4.2005 Где: Талица Репутация: нет Всего: 3 |
Тем-тем. Все зависит от переданных параметров.
function WrapText(const Line, BreakStr: string; BreakChars: TSysCharSet; MaxCol: Integer): string;overload; По умолчанию BreakChars = [' ', ' -' , #9], т.е. как раз на слова и разбивается. Но считает она не ширину строки в пикселах, а просто, что бы количество символов было меньше MaxCol. |
|||
|
||||
| s-mike |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 9 Всего: 16 |
Я об этом и говорю:
|
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Мдя... уж!
tripsin обрати внимание на следующие функции: GetCharWidth32, GetCharABCWidths. Вот например простейший пример для GetCharWidth32:
Это сообщение отредактировал(а) Girder - 19.5.2005, 12:31 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| tripsin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 10.4.2005 Где: Талица Репутация: нет Всего: 3 |
Girder Твой код не работает! Ты сам-то пробовал. Он до строки "Caption:=IntToStr(i-1); //Типо... ответ" - даже не доходит.
GetCharWidth32(DC,0,255,a); - это че за вызов-то? Вставь проверку: if not GetCharWidth32(DC,0,255,a) then ShowMessage('Хрена! Не работает!'); Кста. В твоем коде в DC надо выбирать шрифт с помощью SelectObject, иначе будет использоваться системный шрифт. Ну блииииин!! Короче нужна функция такого вида: function Number_Of_Chars_In_Pixel_Width(Pixel_Width_Of_window: Integer; WindowFont: TFont): Integer; Может хоть так понятнее. Как определить ширину имеющейся строки я и так знаю. Пока у этой задачи я нашел 2 ответа: 1. Подбор ширины строки в цикле, как показал Yanis(по "среднему" символу, или с помошью функций группы GetCharWidth (но для них нужен конкретный текст) 2. Мой вариант с использованием метрик тескта. Мне только интересно - корректный это код или нет (работает точно). |
|||
|
||||
| Girder |
|
||||||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
1.
2.
3.
Это сообщение отредактировал(а) Girder - 19.5.2005, 15:26 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||||||
|
|||||||||||
| Guest |
|
|||
|
Unregistered |
Это я, tripsin
Girder Ты уж не обижайся |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Лови... примерную реализацию
Это сообщение отредактировал(а) Girder - 19.5.2005, 15:32 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |