Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Установка шрифта в Word из программы


Автор: Нитонисе 7.1.2010, 21:50
Создаю в ворде отчет, нужно задать шрифт, вчастности его размер (хотя интересует и как сам шрифт задается и его различные характеристики). Отчет создаю на основе компонентов WordApplication с палитры Office2k.

Автор: Damp1L 8.1.2010, 11:23
Это вроде то? Правда код на делфи, поправишь сам =)
Код

MsWord.Selection.Font.Bold := True; // Установить жирный шрифт
MsWord.Selection.Font.Size := 12; // установить 12 кегль
MsWord.Selection.TypeText('Текст');

Автор: Нитонисе 8.1.2010, 12:29
Цитата(Damp1L @  8.1.2010,  11:23 Найти цитируемый пост)
Это вроде то? Правда код на делфи, поправишь сам =)

На С++ это было бы равнозначно
Код

WordApplication1->Selection->Font->set_Size(10);

Но этот код не работает.

Автор: Данкинг 8.1.2010, 13:05
Цитата(Нитонисе @  8.1.2010,  12:29 Найти цитируемый пост)
set_Size

 smile Ты уверен в правильности оператора?

Автор: Damp1L 8.1.2010, 13:22
Ага, откуда ты там set нашёл?

Автор: Нитонисе 8.1.2010, 13:48
Цитата(Данкинг @  8.1.2010,  13:05 Найти цитируемый пост)
Ты уверен в правильности оператора?

А точно!
Правильный вариант вот такой - 
Код

WordApplication1->Selection->Font->Size = 10;

Интересно а что тогда делает мой предыдущий вариант?...

Тока тут еще есть один вопрос, я уже и тему такую создавал. Созданная надпись в ворде подсвечена. Как програмно снять выделение?

Автор: Данкинг 8.1.2010, 13:57
Цитата(Нитонисе @  8.1.2010,  13:48 Найти цитируемый пост)
Интересно а что тогда делает мой предыдущий вариант?...

Глючит, видимо, что ещё он может делать. smile 

Цитата(Нитонисе @  8.1.2010,  13:48 Найти цитируемый пост)
Как програмно снять выделение? 

Не знаю. Но посмотри, как сам Word это делает. smile 

Автор: Нитонисе 8.1.2010, 14:00
Цитата(Данкинг @  8.1.2010,  13:57 Найти цитируемый пост)
Не знаю. Но посмотри, как сам Word это делает.

Всмысле?

Автор: Данкинг 8.1.2010, 14:26
В смысле, "Сервис - Макрос - Начать запись". Потом делаешь, что тебе нужно. А потом нажимаешь <ALT>+<F11>, и открывается окно VBA, где ты можешь посмотреть код записанного макроса. Нечто вроде:
Код

Sub Макрос3()
'
' Макрос3 Макрос
' Макрос записан 08.01.2010 Новоясеневский маньяк
'
    With Selection.ParagraphFormat
        With .Shading
            .Texture = wdTextureNone
            .ForegroundPatternColor = wdColorAutomatic
            .BackgroundPatternColor = wdColorAutomatic
        End With
        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
        .Borders(wdBorderTop).LineStyle = wdLineStyleNone
        .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
        With .Borders
            .DistanceFromTop = 1
            .DistanceFromLeft = 4
            .DistanceFromBottom = 1
            .DistanceFromRight = 4
            .Shadow = False
        End With
    End With
    With Options
        .DefaultBorderLineStyle = wdLineStyleSingle
        .DefaultBorderLineWidth = wdLineWidth050pt
        .DefaultBorderColor = wdColorAutomatic
    End With
End Sub

Осталось теперь подогнать макрос под Билдер. smile 

Автор: Нитонисе 8.1.2010, 14:43
Цитата(Данкинг @  8.1.2010,  14:26 Найти цитируемый пост)
Осталось теперь подогнать макрос под Билдер.

У меня почему-то по нажатии Alt+F11 открылось пустое окно визуал бэйсика. Такого кода там нет как у тебя. А это код снятия выделения со строки? Ничерта не понять.

Вот это что ли отвечает за выделение?
Код

With Selection.ParagraphFormat
        With .Shading
            .Texture = wdTextureNone
            .ForegroundPatternColor = wdColorAutomatic
            .BackgroundPatternColor = wdColorAutomatic
        End With

Автор: Данкинг 8.1.2010, 15:24
Цитата(Нитонисе @  8.1.2010,  14:43 Найти цитируемый пост)
У меня почему-то по нажатии Alt+F11 открылось пустое окно визуал бэйсика. 

Запись макроса делал? Остановку записи не забыл?

Добавлено через 28 секунд
Цитата(Нитонисе @  8.1.2010,  14:43 Найти цитируемый пост)
Вот это что ли отвечает за выделение?

Похоже, судя по операторам.

Автор: Нитонисе 8.1.2010, 15:41
Цитата(Данкинг @  8.1.2010,  15:24 Найти цитируемый пост)
Запись макроса делал? Остановку записи не забыл?

Ага, открывается просто редактор визуала бэйсика и там пустое окно редактирования.
Цитата(Данкинг @  8.1.2010,  15:24 Найти цитируемый пост)
Похоже, судя по операторам.

Ну и как это можно перевести в Билдер?

Автор: Нитонисе 8.1.2010, 15:57
Разобрался как записывать макросы. Осталось понять как это трансформировать в билдер.

Автор: Данкинг 8.1.2010, 17:43
Видимо, WordApplication1->Selection->ParagraphFormat->Shading->Texture = wdTextureNone

Автор: Нитонисе 8.1.2010, 17:57
Неа. Так не работает. Решил снять выделение сдвиганием курсора. А как его двигать - подсказали в соседней ветке.
Код

WordApplication1->Selection->MoveRight(TVariant(wdCharacter), TVariant(1), EmptyParam);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)