![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 24.06.2013
Сообщений: 3
|
![]()
Добрый всем день!
Подскажите пожалуйста, как в Word`е программно рассчитать "ширину текста"? Например, шрифтом "Times New Roman", 14 размера, набран следующий текст "Пример текста". Какой ширины будет этот текст при печати? |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 24.06.2013
Сообщений: 3
|
![]()
Отвечу сам же.
Использую свойство Information объекта Word.Selection. Можно использовать как Information(wdHorizontalPositionRel ativeToTextBoundary), так и Information(wdHorizontalPositionRel ativeToPage). Пример функции: Public Function Selection_TextWidth() As Double ' Возвращает ширину выделенного текста в сантиметрах. ' Выделять можно только не более 1-й строки текста и ' в выделение не должен входить символ перевода строки и/или параграф. Dim MyRange As Range, MyRange1 As Range, clps As Range Dim tmpStart As Double, tmpEnd As Double Application.ScreenUpdating = 0 With Selection Set MyRange = .Range 'Запомним область выделения для восстановления Set MyRange1 = .Range 'Запомним область выделения для определения 'Окончания выделенной области 'Определяем Начало выделенной области Set clps = .Range clps.Collapse (wdCollapseStart) clps.Select tmpStart = PointsToCentimeters(.Information(wd HorizontalPositionRelativeToTextBou ndary)) 'Определяем Окончание выделенной области Set clps = MyRange clps.Collapse (wdCollapseEnd) clps.Select tmpEnd = PointsToCentimeters(.Information(wd HorizontalPositionRelativeToTextBou ndary)) End With Application.ScreenUpdating = 1 MyRange1.Select Selection_TextWidth = tmpEnd - tmpStart End Function |
![]() |
![]() |
![]() |
#3 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Ваша тема (ширина текста, координаты выделения) на удивление популярна: http://programmersforum.ru/showthread.php?t=73854
Хотелось бы узнать, а что так торкнуло?
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 24.06.2013
Сообщений: 3
|
![]()
Необходимость следующая:
Есть некая форма из 2-х полей. Разделить текст на 2 части (на 2 поля), 1-я часть должна быть строго по заданной ширине. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как программно добавить "виртуальные курсоры" Delphi | beegl | Общие вопросы Delphi | 7 | 08.03.2013 13:23 |
Как программно изменить цвет "компонента"? Смотрим внутри... | Vova777 | Общие вопросы Delphi | 3 | 15.02.2012 05:56 |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
Как программно запускать "Дефрагментация дисков" на Windows XP | kenta | Общие вопросы Delphi | 2 | 29.11.2009 20:12 |
Как узнать ширину панели "Пуск" | Port 111 | Win Api | 6 | 01.02.2009 23:05 |