Delphi word межстрочный интервал

После попытки записи макроса, изменения интервала и просмотра кода макроса, я был удивлён тем, что макрос оказался пуст. Теперь же небольшая заметка о том, как изменить интервал программно, через Delphi.

Свойства

Для начала надо выбрать ту часть документа, в которой мы хотим изменить интервал. Выберем первую таблицу:

WordDocument1.Tables.Item(1).Select;

Теперь осталось изменить у неё свойства LineUnitAfter и LineUnitBefore, первое отвечает за интервал «после», а второе «перед». Установим интервал равным 0:

WordApplication1.Selection.ParagraphFormat.LineUnitAfter  := 0;

WordApplication1.Selection.ParagraphFormat.LineUnitBefore := 0;

Стоит заметить что в данном случае интервал измеряется в строках, а что бы устанавливать значения в пунктах (пт.) надо использовать следующую функцию:

WordApplication.LinesToPoints(i);

Где i — количество строк, т.е приравнивание будет иметь вид:

WordApplication1.Selection.ParagraphFormat.LineUnitAfter  := WordApplication.LinesToPoints(0);

WordApplication1.Selection.ParagraphFormat.LineUnitBefore := WordApplication.LinesToPoints(0);

Но, почему то у меня при установке интервала равным нулю ничего не менялось и значение оставались равными по умолчанию. В качестве выхода, можно указать очень маленькая значение, например 0.01

WordApplication1.Selection.ParagraphFormat.LineUnitAfter  := 0.01;

WordApplication1.Selection.ParagraphFormat.LineUnitBefore := 0.01;

После чего Word автоматически приравняет столь маленькое значение нулю.

Популярные записи

  1. Управление форматированием документа

После
того, как кожух закрепили 96 удерживающими
болтами,

окажется,
что внутрь забыли положить прокладку.

Из
законов Мэрфи.

Попробуем
сделать наш отчет красивым. Для этого
мы можем управлять форматированием
абзацев (выравнивание, межстрочный
интервал, отступ первой строки) и
форматированием шрифта (гарнитура
шрифта, размер, жирный-курсив-подчеркнутый
и т.д.) Заданное форматирование действует
на текущий абзац.
Обычно схема работы такова:


вывести в Word текст абзаца;


применить к нему нужное форматирование;


вывести в Word текст
следующего абзаца;


применить к нему форматирование

и т.д.

Для
задания параметров абзаца служит
компонент WordParagraphFormat.
Свойств у него много, поэтому рассмотрим
только главные:

Свойство

Что
делает

Возможные
значения

Alignment

Способ выравнивания
текста в абзаце

wdAlignParagraphCenter– по центру

wdAlignParagraphJustify– по ширине

wdAlignParagraphLeft- влево

wdAlignParagraphRight- вправо

FirstLineIndent

Отступ первой строки
в пунктах

(1 см = 28.35 пункта)

Целое число от 0 и
выше

LineSpacing

Межстрочный интервал
в пунктах

Значение 12 соответствует
1 интервалу, 18 – 1.5, 24 – 2-м.

Стандартный
межстрочный интервал также удобно
задавать вызовами методов Space1,
Space15,
Space2.

Шрифтом
управляет компонент WordFont.
Вот его основные свойства:

Свойство

Что
делает

Возможные
значения

Name

Название гарнитуры
как текстовая строка

‘Times’,
‘Arial’, ‘Courier’…

Size

Размер шрифта в
пунктах

Целое число от 6 и
выше. Стандартный размер шрифта – 14

Italics

вкл/выкл курсив

Целое число 0 или 1

Underline

вкл/выкл
подчеркивание

Целое число 0 или 1

Bold

вкл/выкл жирный
шрифт

Целое число 0 или 1

Subscript

вкл/выкл верхние
индексы

Целое число 0 или 1

Superscript

вкл/выкл нижние
индексы

Целое число 0 или 1

Color

цвет шрифта

Обычные константы
цвета: clRed,
clBlue…

Рассмотрим
использование перечисленных свойств
в программе. В начале один раз надо
подключить компоненты WordFont1
и WordParagraphFormat1
к текущему абзацу и шрифту при помощи
их метода ConnectTo.

// Добавление
текста
в
Word

WordApplication1.selection.InsertAfter

(‘Результаты
работы гениальной программы студента
Б. Гейтса’+#13);

//
подключение
к
текущему
шрифту

WordFont1.ConnectTo(WordApplication1.Selection.Font);

// подключение
к
текущему
абзацу

WordParagraphFormat1.ConnectTo

(WordApplication1.Selection.ParagraphFormat);

// название
шрифта

WordFont1.Name:=’Arial’;

//
размер

WordFont1.Size:=14;

//
выравнивание по центру

WordParagraphFormat1.Alignment:=wdAlignParagraphCenter;

//
Установка нулевого абзацного отступа

WordParagraphFormat1.FirstLineIndent:=0;

//
Снимаем выделение текста

par:=wdCollapseEnd;

WordApplication1.Selection.Collapse(par);

WordApplication1.selection.InsertAfter

(‘Второй
абзац’+#13);

Особую
важность играет вызов метода Collapse.
Этот метод позволяет перейти к выводу
в Word следующего абзаца,
у которого, вероятно, будет иное
оформление. Если забыть выполнить метод
Collapse,
то вновь вводимый текст заменит ранее
введенный. В приводимом примере строчка
«Результаты
работы гениальной программы студента
Б. Гейтса» просто
исчезла бы из отчета.

Соседние файлы в папке 2 семестр

  • #
  • #
  • #
  • #

Помогаю со студенческими работами здесь

Интервал не меняется межстрочный
Здравствуйте, помогите чайнику. В моей теме вордпресс стоит интервал межстрочный 1.9, а я хочу 1.5….

Word2007 межстрочный интервал
Подскажиет как вылечить такой глюк в ворде2007. Нажимаю в разделе Абзац пимпу "Междустрочный…

Межстрочный интервал в печатных формах
Добрый день.

В 1С была добавленная печатная форма Акта.
Подскажите пожалуйста, можно ли как то…

Как в тексте Word изменять шрифт и межзнаковый интервал?
Нужно только одного вставляемого символа юникода ChrW(3966) после каждой гласной буквы?

Как уменьшить межстрочный интервал в ListView
Решил попробовать реализовать Drag And Drop, но TreeView плохо справляется с выделением узла по…

Как создать межстрочный интервал в HTML5?
Я хочу зделать так как на скриншоте.
И написал код:
<!doctype html>
<html>
<head>
<meta…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

 
VID
 
(2004-02-05 19:53)
[0]

Можно ли такое сделать ? т.е. если например шрифт Courier New, а его размер — 8, то можно ли ко всему этому ещё и уменьшеть межстрочный интервал ?


 
just me
 
(2004-02-05 20:12)
[1]

Примерно так:

var

pf2 : ParaFormat2;

begin

FillChar(pf2, SizeOf(pf2), 0);

pf2.cbSize := SizeOf(PARAFORMAT2);

pf2.dwMask := PFM_LINESPACING;

pf2.bLineSpacingRule := lineSpacing;

SendMessage(Editor.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2));

end;


 
VID
 
(2004-02-05 23:08)
[2]

Этот код вроде бы эффективен но с его помощью получается только УВЕЛИЧИТЬ межстрочный интервал, а вот уменьшить..

если в кач-ве lineSpacing указываю ноль, то не получаю никаких изменений, если 1 — то уже явное увеличение межстрочного интервала.

а мне надо уменьшение…


 
MBo
 
(2004-02-06 07:00)
[3]

а отрицательные значения не пробовал?


 
VID
 
(2004-02-06 14:32)
[4]

To Mbo: pf2.bLineSpacingRule : Byte, какие там отрицательные значения… :(

по ходу , я понял что это невозможно..

даже в демопримере по использованию RxRichEdit, который поставляется в пакете RX можно изменять межстрочный интервал только в строну увеличения первоначального интервала…


 
MBo
 
(2004-02-06 14:41)
[5]

не обратил внимание, что ты не то поле используешь (bLineSpacingRule — стандартные межстрочные интервалы — 1, 1.5 и т.д.)

LONG dyLineSpacing;


    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    Межстрочный интервал в RichEdit

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    16.01.07, 21:58

      Full Member

      ***

      Рейтинг (т): 14

      Можно ли изменять межстрочный интервал в RichEdit (полуторный, двойной) и если да, то как? :wall:
      Спасибо за внимание


      dron-s



      Сообщ.
      #2

      ,
      16.01.07, 22:18

        попробуй лучше использовать SynEdit…
        там вроде бы это реализовано…


        MBo



        Сообщ.
        #3

        ,
        17.01.07, 06:03

          использовать сообщение EM_SETPARAFORMAT со структурой PARAFORMAT2

          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

          0 пользователей:

          • Предыдущая тема
          • Delphi: Общие вопросы
          • Следующая тема

          Рейтинг@Mail.ru

          [ Script execution time: 0,0229 ]   [ 16 queries used ]   [ Generated: 13.04.23, 22:37 GMT ]  

          Я работаю с компонентом TMemo для отображения некоторого текста в ограниченном пространстве. В настоящее время он использует шрифт truetype, который не поставляется с окнами и устанавливается приложением при его запуске.

          На моем ПК (запустив Windows XP) расстояние между каждой строкой текста составляет около восьми пикселей. На другом ПК под управлением Windows 7 интервал между линиями составляет около 14 пикселей, который выталкивает нижнюю строку текста из видимости в заметке.

          Итак, мой вопрос действительно таков:

            Это вызвано различными версиями Windows? Все, что я мог подумать, было иначе.
            Есть ли способ настроить это значение таким образом, чтобы он был согласован во всех экземплярах приложения, где бы он ни работал?

          Альтернативно, есть ли другой компонент, который я мог бы использовать, который может позволить мне настроить это значение?

          Понравилась статья? Поделить с друзьями:
        • Delphi word как закрыть word
        • Delphi excel количество строк
        • Delphi excel как число
        • Delphi excel как скопировать диапазон
        • Delphi excel имя всех листов