|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.05.2022, 19:07 | #11 | ||
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Если используете Windows, то вот это должно помочь
Цитата:
Цитата:
add: К сожалению набор свойств компонентов отличаются под Windows и Linux. Но будут проблемы с реализацией - пишите в личку. Будет свободное время - набросаю пример. Последний раз редактировалось macomics; 09.05.2022 в 19:14. |
||
09.05.2022, 19:25 | #12 | ||
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Цитата:
Приложение может использовать функции Wordwrap с элементами управления многострочным редактированием, чтобы найти слово или фрагмент слова, который следует перенести на следующую строку. Используя функцию переноса слов по умолчанию, предоставляемую системой, строки всегда заканчиваются пробелами между словами. Приложение может указать свою собственную функцию Wordwrap, предоставив функцию Wordwrap EditWordBreakProc и отправив элементу управления edit сообщение EM_SETWORDBREAKPROC. Приложение может получить адрес текущей функции переноса слов, отправив элементу управления сообщение EM_GETWORDBREAKPROC. Цитата:
Приложение может направить элемент управления многострочным редактированием на автоматическое добавление или удаление символа мягкого разрыва строки (два возврата каретки и перевод строки) в конце строк с обернутым текстом. Приложение может включить или выключить эту функцию, отправив элементу управления редактированием сообщение EM_FMTLINES. Это сообщение относится только к элементам управления многострочным редактированием и не влияет на строку, которая заканчивается жестким разрывом строки (один возврат каретки и ввод строки пользователем). Также в многострочных элементах управления редактированием приложение может указать стиль ES_WANTRETURN, чтобы запросить, чтобы система вставляла возврат каретки, когда пользователь нажимает клавишу ENTER в элементе управления редактированием. |
||
09.05.2022, 19:25 | #13 |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Ах, не говори красиво брат Аркадий! Написано много букавв на английском... Много теории...
Хотелось бы конкретики... А так, спасибо, конечно. |
09.05.2022, 19:46 | #14 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
В чем проблема написать функцию поиска конца строки?
|
09.05.2022, 20:05 | #15 |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Написать функцию поиска конца строки не составляет труда: найти символы #10 и #13.
Закавыка в другом - каким-то образом понять и отразить- где заканчивается одна длинная строка и начинается следующая длинная строка. При свойстве Memo WordWrap=true каждая длинная строка разобьётся на несколько более коротких. Хотелось бы готовых наработок, чтобы самому не ковыряться. Вероятно, надо использовать Memo.Lines.CommaText = список одной строкой, разделенной запятыми (при этом строки с пробелами заключены в двойные кавычки) и ковырять... |
09.05.2022, 20:33 | #16 | |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Цитата:
ADD: Так в callback EM_GETWORDBREAKPROC первым параметром приходит строка для анализа, а третий параметр длина строки в символах. Последний раз редактировалось macomics; 09.05.2022 в 21:27. |
|
09.05.2022, 22:13 | #17 |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Функция DrawText рисует отформатированный текст в заданном прямоугольнике.
Значение DT_CALCRECT Выясняет ширину и высоту прямоугольника. Если имеется несколько строк текста, функция DrawText использует ширину прямоугольника, указанную параметром lpRect и продлевает основу прямоугольника, чтобы ограничить последнюю строку текста. Если самое большое слово шире, чем прямоугольник, ширина дополняется. Если текст - меньше, чем ширина прямоугольника, ширина уменьшается. Если есть только одна строка текста, DrawText изменяет правую сторону прямоугольника так, чтобы она ограничивала последнюю букву в строке. И в том, и в другом случае, DrawText возвращает значение высоты отформатированного текста, но не выводит текст. |
09.05.2022, 22:18 | #18 |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Каким образом это помогает определять конец длинной строки?
Идея рисовать по сути на Канвасе, вместо того, чтобы использовать свойства Мемо? Ну не знаю... Не окажется ли этот путь более трудоемким и богатым на ошибки? |
09.05.2022, 22:20 | #19 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Отлично. В переводчик вы запихнуть текст смогли. Теперь что не понятно. У вас есть Memo (он же Edit, многострочный). Узнаете его размеры Rect, выясняете влезает в эту Rect область вычисленная DrawText для DC этого Memo.
В callback вам также приходит вторым параметром индекс разбиения строки. От него и можно плясать уменьшая или увеличивая текст, вычисляя Rect. Если используете FIXED_PITCH, то еще проще. Зная ширину символа, вычисляете произведение длина строки на ширину символа. add: Это как раз та разбивка, которую вы возможно хотите получить. Последний раз редактировалось macomics; 09.05.2022 в 22:30. |
09.05.2022, 22:29 | #20 |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
EM_GETWORDBREAKPROC
2 параметра: - wParam = 0; / / не используется; должна быть нулевой - lParam = 0; / / не используется; должно быть равно нулю Третий - третий параметр длина строки в символах? М.б. имеется какая-то более новая версия EM_GETWORDBREAKPROC? |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос данных из одной БД в другую | Максикок | SQL, базы данных | 1 | 15.03.2015 22:54 |
Перенос данных из одной таблицы в другую | atenon | Фриланс | 5 | 23.07.2014 06:18 |
Перенос данных из одной книги в другую | and150382 | Microsoft Office Excel | 3 | 26.03.2013 12:21 |
перенос из одной таблицы БД в другую | WishHunter | Помощь студентам | 9 | 21.02.2013 08:15 |
Перенос данных из одной БД в другую | demiancz | БД в Delphi | 1 | 11.03.2012 18:53 |