|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Выравнивание Justify |
|
Выравнивание Justify
|
Пользователь Сообщения: 74 |
Профиль | Сайт | Отправить PM | Цитировать Мне нужно написать свой модуль (на Delphi), где была бы реализована
возможность выравнивания текста (например, по левому краю или по центру..). не могу придумать и реализовать алгоритм. |
|
------- Отправлено: 15:29, 18-05-2005 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Mavlyudov
Выравнивание внутри какого компонента ? |
Отправлено: 18:01, 18-05-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Делается это в два этапа для каждой строчки:
1. замер текста w и вычисление смещения x (TCanvas.GetTextExtent) 2. печать текста (TCanvas.TextOut) со смещением x для левого выравнивания x=0, для правого x:=w0-w, по центру: x:=(w0-w) div 2 Full Justify делается немного сложнее. Нужно разбить текст на слова, узнать сколько в строчке свободного места и равномерно разделить место (смещения) между пробелами. Всё это можно не делать, а воспользоваться функцией (winapi) DrawText или DrawTextEx Цитата:
|
|
Отправлено: 11:15, 19-05-2005 | #3 |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать ну например есть модуль. и этот модуль создает на диске файл... в этот файл записывается какой-то текст (например пишет его туда все тот же модуль, а можно и вручную загнать туда текст). Потом, используя этот модуль, например при нажатии на кнопку, открываем созданный файл на чтение (reseset), выравниваем текст и перезаписываем в файл.
Но, если честно, я не понял, как реализовать алгоритм, предложенный pva. |
------- Отправлено: 18:40, 19-05-2005 | #4 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Mavlyudov
Cм. аттач, выравнивание строк указанного файла на указанную ширину, в виде программы. |
|
Последний раз редактировалось Savant, 28-05-2005 в 12:25. Причина: обновление контента Отправлено: 00:05, 24-05-2005 | #5 |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо, за выравнивание по ширине.
Буду разбираться. Ну а если я выравниваю по правому краю, то мне,наверное, надо выбросить все пробелы вконце строки, а потом добавить слева (в начале строки) нужное количество пробелов до 80 символов?!. только как это реализовать в делфи. подскажите, хотябы как удалить все пробелы вконце строки. |
------- Отправлено: 18:39, 27-05-2005 | #6 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Mavlyudov
По правому краю вообще в три строчки пишется (s - строка для выравнивания, w - необходимая ширина): function StringRight(const s: String; const w: Integer): String; var i: Integer; begin // Вырезаем пробемы и прочее ненужное справа (и заодно слева) // (если только справа, то - TrimRight(s)) Trim(s); // Добавляем необходимое количество пробелов слева Result := ''; for i := 1 to (w - Length(s)) do Result := Result + ' '; Result := Result + s; end; |
Отправлено: 00:25, 28-05-2005 | #7 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Вдруг неожиданно нашел применение данного кода и у себя в одном приложении... Правда пришлось слегка модифицировать...
В общем обновил аттач, добавил функцию String_To_SameWidth2(var strlist: TStringList; const w: Integer), которая обладает намного более солидными возможностями по выравниванию текста. Например, при возможности дополняет текущую строку словами из следующей или, наоборот, обрезает (при превышении нужной ширины). Так же корректно обрабатывает абзацы и прочие отступы. Побочным эффектом стала возможность размещать отформатированный (выровненный) текст в несколько столбцов. |
Отправлено: 12:25, 28-05-2005 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - выравнивание Tlabel | SS3 | Программирование и базы данных | 4 | 18-10-2009 20:08 | |
выравнивание в разных браузерах | toro | Вебмастеру | 13 | 28-08-2008 13:43 | |
CSS выравнивание элементов | maaxiim | Вебмастеру | 14 | 19-06-2008 21:22 | |
Верстка. Выравнивание в таблице. | rim_muvies | Вебмастеру | 1 | 20-08-2007 12:11 | |
c++.NET выравнивание матрицы | bezumes | Программирование и базы данных | 4 | 22-04-2006 01:20 |
|