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

Visual Basic

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

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

01.01.2017, 00:04. Просмотров 351. Ответов 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 }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2017, 00:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как задать свои параметры RTF? (VB):

Как загрузить *.rtf в RichTextBox... - Visual Basic
При двойном щелчке по файлу с расширением *.doc, последний открывается в MSWord, если это приложение по-умолчанию для этого типа. Как...

Как конвертировать изображение из RTF в jpg - Visual Basic
Всем привет. Есть задача не мог решить. Есть изображение в формате RTF т.е. имеетс в RTF файле нужно получить простую картинку в любом...

как открыть .rtf файл в RichTextBoxe - Visual Basic
может у кого завалялся такой код? чтобы открывать rtf файлы в проекте на vb6. ато у меня получилось открывать только исходный код.

RichTextBox, RTF коды. Как воспользоваться табуляцией? - Visual Basic
Из MSDN'а не совсем понятно. Допустим, я хочу, чтобы позиции табуляции шли, например, через 8 знакомест. И некий символ был на первой...

Как вывести результаты расчета с графикой в doc или rtf? - Visual Basic
Кой как разобрался с операторами print# и write#. Беда в том что txt не совсем годится для вывода информации.

Как можно сохранить текст из RichTextBox в файл с раширением rtf? - Visual Basic
подскажите плиз: как можно сохранить текст из RichTextBox в файл с раширением rtf, что то у меня нифига не получается...

12
ji2n
2 / 2 / 1
Регистрация: 08.10.2016
Сообщений: 33
01.01.2017, 23:03 #2
тут как-бы топик про VB.
0
Catstail
Модератор
22709 / 11078 / 1795
Регистрация: 12.02.2012
Сообщений: 18,265
02.01.2017, 12:48 #3
А в VB есть компонент RichTextBox.
0
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
02.01.2017, 20:13  [ТС] #4
Catstail, может чего подскажешь?! А то не получается у меня с Ричем справиться)))
0
fever brain
ACCESS DENIED
795 / 368 / 71
Регистрация: 05.01.2016
Сообщений: 981
Записей в блоге: 5
03.01.2017, 06:25 #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

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

Добавлено через 5 минут
fever brain, Вопрос а что в ресурсном файле?
0
fever brain
ACCESS DENIED
795 / 368 / 71
Регистрация: 05.01.2016
Сообщений: 981
Записей в блоге: 5
04.01.2017, 04:19 #8
Цитата Сообщение от Don Leno Посмотреть сообщение
fever brain, Вопрос а что в ресурсном файле?
Манифест для компонента VBCCR12.OCX и тем Windows, это чтобы после компиляции
программа не требовала регистрации, не прикапывалась с UAC-ом и отображала кнопки в той-же самой теме что использует Windows
мой личный проект с заготовкой в котором все универсальные контролы (юникодные! ). не только RichtextBox ...
0
Don Leno
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 30
05.01.2017, 08:17  [ТС] #9
Одного не пойму зачем нужна строка
Visual Basic
1
  RichTextBox1.TextRTF = Replace(rtf, "[vbCrLf]", vbCrLf)
если можно вместо "[vbCrLf]" прям в переменной сразу вставить символы перевода строки (vbCrLf)?! Тем самым отпадает необходимость лишнего кода Replace.
0
fever brain
ACCESS DENIED
795 / 368 / 71
Регистрация: 05.01.2016
Сообщений: 981
Записей в блоге: 5
05.01.2017, 08:39 #10
Цитата Сообщение от Don Leno Посмотреть сообщение
Одного не пойму зачем нужна строка
Ну это для наглядности, тебе же надо было показать как задать свои параметры RTF
я продемонстрировал один из способов, а можно было еще при входе-выходе программы хранить
отдельный файл RTF не только с заготовленным текстом, а изменяемым в процессе пользования ..
если хранить в отдельном файле то да, там символ новой строки не важен, сейчас попробую поменять программу для этого
0
fever brain
ACCESS DENIED
795 / 368 / 71
Регистрация: 05.01.2016
Сообщений: 981
Записей в блоге: 5
05.01.2017, 09:24 #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
0
Миниатюры
Как задать свои параметры RTF?  
Вложения
Тип файла: zip Работа с RTF(2).zip (1.57 Мб, 3 просмотров)
fever brain
ACCESS DENIED
795 / 368 / 71
Регистрация: 05.01.2016
Сообщений: 981
Записей в блоге: 5
05.01.2017, 09:28 #12
и в Word-е тоже читается
0
Миниатюры
Как задать свои параметры RTF?  
Dragokas
09.01.2017, 00:38     Как задать свои параметры RTF?
  #13

Не по теме:


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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 00:38
Привет! Вот еще темы с ответами:

Как делать свои OCX - Visual Basic
Проблема в том что когда я делаю свой ОСХ у меня в его свойствай (реакции на события) бред какой-то, штук пять или что-то такое - как...

Как сделать, чтобы в RTF после точки писалась большая буква? - Visual Basic
Как сделать, чтобы в RTF после точки писалась большая буква? Если можно примерчик.

Как в стандартном RTF-боксе изменить ЦВЕТ ФОНА отдельных строк? - Visual Basic
Кто подскажет, как в стандартном RTF-боксе изменить ЦВЕТ ФОНА отдельных строк. Заранее спасибо.

Как программно пересохранить word-овский документ в файл с расширением «.rtf» - Visual Basic
Dim word = New Word.Application word.Documents.Open("\...\Doc1.doc") ...


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

Или воспользуйтесь поиском по форуму:
13
09.01.2017, 00:38
Ответ Создать тему
Опции темы

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