Форум программистов, компьютерный форум CyberForum.ru

Visual Basic

Войти
Регистрация
Восстановить пароль
 
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
#1

Как задать свои параметры RTF? - Visual Basic

01.01.2017, 00:04. Просмотров 256. Ответов 12
Метки нет (Все метки)

Подскажите пожалуйста как в RichTextBox задать текст в ртф формате по своему (с нуля, начиная с заголовка)?
Дело в том, что я задаю текст в свойство TextRTF, но оно не задает заголовок и другие опции:
Вот ртф, который я задаю:
Visual Basic
1
2
3
4
5
6
{\rtf1
 Привет!
 \par
 {\i Это} некий
 отформатированный {\b текст}.\par
}
А в итоге в RTB.TextRTF содержится такой текст:
Visual Basic
1
2
3
4
5
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset204 MS Sans Serif;}}
\viewkind4\uc1\pard\lang1049\f0\fs17\'cf\'f0\'e8\'e2\'e5\'f2! 
\par \i\'dd\'f2\'ee\i0  \'ed\'e5\'ea\'e8\'e9 \'ee\'f2\'f4\'ee\'f0\'ec\'e0\'f2\'e8\'f0\'ee\'e2\'e0\'ed
\'ed\'fb\'e9 \b\'f2\'e5\'ea\'f1\'f2\b0 .
\par }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2017, 00:04     Как задать свои параметры RTF?
Посмотрите здесь:

как вывести результаты расчета с графикой например в doc или rtf? Visual Basic
как открыть .rtf файл в RichTextBoxe Visual Basic
Как программно пересохранить word-овский документ в файл с расширением «.rtf» Visual Basic
Как делать свои OCX Visual Basic
Visual Basic Как загрузить *.rtf в RichTextBox...
Visual Basic RichTextBox, RTF коды. Как воспользоваться табуляцией?
Как преобразовать текст из формата RTF в обычный текст? Visual Basic
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ji2n
1 / 1 / 1
Регистрация: 08.10.2016
Сообщений: 25
01.01.2017, 23:03     Как задать свои параметры RTF? #2
тут как-бы топик про VB.
Catstail
Модератор
22140 / 10614 / 1728
Регистрация: 12.02.2012
Сообщений: 17,662
02.01.2017, 12:48     Как задать свои параметры RTF? #3
А в VB есть компонент RichTextBox.
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
02.01.2017, 20:13  [ТС]     Как задать свои параметры RTF? #4
Catstail, может чего подскажешь?! А то не получается у меня с Ричем справиться)))
fever brain
Экстрасенс
726 / 264 / 62
Регистрация: 05.01.2016
Сообщений: 759
Записей в блоге: 3
03.01.2017, 06:25     Как задать свои параметры RTF? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Код RTF можно задать свойству TextRTF, там зашифрованны шрифт формат и тд
Но в этом коде присутствуют служебные символы новой строки
Для присвоения своего текста с кодом RTF я делаю так:
Заменяю в этом коде служебный символ [] на свой например такой [vbCrLf] и вставляю его в константу
а уже при загрузке формы эта же константа присваивается с противоположной заменой символов

Ниже представлен код программы в которой кнопками настраивается текст и есть возможность
отправить полученный RTF(без vbCrLf) в буфер обмена



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
 
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private hLib As Long
 
Private Sub Command1_Click(Index As Integer)
    With RichTextBox1
        Select Case Index
        Case 0
            .SelBold = Not .SelBold
        Case 1
            .SelItalic = Not .SelItalic
        Case 2
            '
            'Вставляем полученный RTF в буфер обмена после чего его можно присвоить константе rtf
            'Заменяем служебный символ новой строки на свой символ "[vbCrLf]"
            '
            With Clipboard
                .Clear
                .SetText Replace(RichTextBox1.TextRTF, vbCrLf, "[vbCrLf]")
            End With
        End Select
    End With
End Sub
 
Private Sub Form_Load()
    '
    'Вставка кода RTF в поле RichTextBox1
    '
    Const rtf = "{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fcharset204{\*\fname Arial;}Arial CYR;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset204 MS Sans Serif;}}[vbCrLf]{\*\generator Msftedit 5.41.15.1517;}\viewkind4\uc1\pard\b\f0\fs17\'ca\'ee\'ef\'e8\'f0\'f3\'e5\'ec \b0\i\'ef\'ee\'eb\'f3\'f7\'e5\'ed\'ed\'fb\'e9 \lang1033\b\f1 RTF\lang1049\b0\i0\f2\par[vbCrLf]}[vbCrLf]"
    RichTextBox1.TextRTF = Replace(rtf, "[vbCrLf]", vbCrLf)
End Sub
 
Private Sub Form_Initialize()
    hLib = LoadLibrary("shell32.dll")
    InitCommonControls
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    FreeLibrary hLib
End Sub
Для использования контрола RichTextBox у меня есть свой OCX-компонент со всеми универсальными контролами
Функционал у него такой-же как у всех RichTextBox

ниже исходник со всеми нужными файлами там-же скомпилированный пример, уверен создателю этой темы понравится мой ответ
Миниатюры
Как задать свои параметры RTF?  
Вложения
Тип файла: zip Работа с RTF.zip (1.90 Мб, 7 просмотров)
Catstail
Модератор
22140 / 10614 / 1728
Регистрация: 12.02.2012
Сообщений: 17,662
03.01.2017, 08:36     Как задать свои параметры RTF? #6
Don Leno, я не совсем понимаю суть проблемы. Текст в формате RTF создается для последующего отображения? Если так, то чем не устраивает то, что получается?
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
03.01.2017, 20:40  [ТС]     Как задать свои параметры RTF? #7
Catstail, верно, мне просто надо добавить туда свои параметры))) Но я имел ввиду как полностью с нуля создать ртф текст и со всеми параметрами закинуть в Рич. Но все равно спс за подсказку
fever brain, спасибо за полный ответ и исходники. Оч рад что помогли)))))

Добавлено через 5 минут
fever brain, Вопрос а что в ресурсном файле?
fever brain
Экстрасенс
726 / 264 / 62
Регистрация: 05.01.2016
Сообщений: 759
Записей в блоге: 3
04.01.2017, 04:19     Как задать свои параметры RTF? #8
Цитата Сообщение от Don Leno Посмотреть сообщение
fever brain, Вопрос а что в ресурсном файле?
Манифест для компонента VBCCR12.OCX и тем Windows, это чтобы после компиляции
программа не требовала регистрации, не прикапывалась с UAC-ом и отображала кнопки в той-же самой теме что использует Windows
мой личный проект с заготовкой в котором все универсальные контролы (юникодные! ). не только RichtextBox ...
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
05.01.2017, 08:17  [ТС]     Как задать свои параметры RTF? #9
Одного не пойму зачем нужна строка
Visual Basic
1
  RichTextBox1.TextRTF = Replace(rtf, "[vbCrLf]", vbCrLf)
если можно вместо "[vbCrLf]" прям в переменной сразу вставить символы перевода строки (vbCrLf)?! Тем самым отпадает необходимость лишнего кода Replace.
fever brain
Экстрасенс
726 / 264 / 62
Регистрация: 05.01.2016
Сообщений: 759
Записей в блоге: 3
05.01.2017, 08:39     Как задать свои параметры RTF? #10
Цитата Сообщение от Don Leno Посмотреть сообщение
Одного не пойму зачем нужна строка
Ну это для наглядности, тебе же надо было показать как задать свои параметры RTF
я продемонстрировал один из способов, а можно было еще при входе-выходе программы хранить
отдельный файл RTF не только с заготовленным текстом, а изменяемым в процессе пользования ..
если хранить в отдельном файле то да, там символ новой строки не важен, сейчас попробую поменять программу для этого
fever brain
Экстрасенс
726 / 264 / 62
Регистрация: 05.01.2016
Сообщений: 759
Записей в блоге: 3
05.01.2017, 09:24     Как задать свои параметры RTF? #11
Вот другой вариант, теперь все сохраняется
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Option Explicit
 
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private hLib As Long
Const MyFile = "\MyRTF.rtf"
 
Private Sub Command1_Click(Index As Integer)
    With RichTextBox1
        Select Case Index
        Case 0
            .SelBold = Not .SelBold
        Case 1
            .SelItalic = Not .SelItalic
        Case 2
            '
            'Вставляем полученный RTF в буфер обмена
            '
            With Clipboard
                .Clear
                .SetText RichTextBox1.TextRTF
            End With
        Case 3
            '
            'Сохраняется в формате RTF, но можно указать и текстовый формат если добавить ,1  [RtfLoadSaveFormatRTF = 0]  [RtfLoadSaveFormatText = 1]
            '
            RichTextBox1.SaveFile App.Path & MyFile
        End Select
    End With
End Sub
 
Private Sub Form_Load()
 
    Const rtf = "{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fcharset204{\*\fname Arial;}Arial CYR;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset204 MS Sans Serif;}}[vbCrLf]{\*\generator Msftedit 5.41.15.1517;}\viewkind4\uc1\pard\b\f0\fs17\'ca\'ee\'ef\'e8\'f0\'f3\'e5\'ec \b0\i\'ef\'ee\'eb\'f3\'f7\'e5\'ed\'ed\'fb\'e9 \lang1033\b\f1 RTF\lang1049\b0\i0\f2\par[vbCrLf]}[vbCrLf]"
 
    With CreateObject("scripting.FileSystemObject")
        
        If .FileExists(App.Path & MyFile) Then
            RichTextBox1.LoadFile App.Path & MyFile ', [RtfLoadSaveFormatRTF = 0]  [RtfLoadSaveFormatText = 1]
        Else
            '
            'Если сохраненный файл не обнаружен, то вставка кода RTF  из константы в поле RichTextBox1
            '
            RichTextBox1.TextRTF = Replace(rtf, "[vbCrLf]", vbCrLf)
        End If
    End With
 
End Sub
 
Private Sub Form_Initialize()
    hLib = LoadLibrary("shell32.dll")
    InitCommonControls
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    FreeLibrary hLib
    If MsgBox("Сохранить файл ?", 68) = vbNo Then Exit Sub
    Command1_Click 3 'Комманда сохранения
End Sub
Миниатюры
Как задать свои параметры RTF?  
Вложения
Тип файла: zip Работа с RTF(2).zip (1.57 Мб, 0 просмотров)
fever brain
Экстрасенс
726 / 264 / 62
Регистрация: 05.01.2016
Сообщений: 759
Записей в блоге: 3
05.01.2017, 09:28     Как задать свои параметры RTF? #12
и в Word-е тоже читается
Миниатюры
Как задать свои параметры RTF?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 00:38     Как задать свои параметры RTF?
Еще ссылки по теме:

Visual Basic Как правильно обновлять свои OCX
Visual Basic Как в стандартном RTF-боксе изменить ЦВЕТ ФОНА отдельных строк?
Как сделать, чтобы в RTF после точки писалась большая буква? Visual Basic
Как можно сохранить текст из RichTextBox в файл с раширением rtf? Visual Basic
Visual Basic Как конвертировать изображение из RTF в jpg

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

Или воспользуйтесь поиском по форуму:
Dragokas
09.01.2017, 00:38     Как задать свои параметры RTF?
  #13

Не по теме:


Цитата Сообщение от fever brain Посмотреть сообщение
мой личный проект с заготовкой в котором все универсальные контролы (юникодные! ). не только RichtextBox ...
не твой, а Krool, при чём давно устаревшей версии.

Yandex
Объявления
09.01.2017, 00:38     Как задать свои параметры RTF?
Ответ Создать тему
Опции темы

Текущее время: 20:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru