Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 65

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

01.01.2017, 00:04. Показов 2224. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2017, 00:04
Ответы с готовыми решениями:

Не могу понять как свои параметры записывать в событие onclick
В общем нигде не нашел ответ на свой вопрос. Я так понял, например, в button.onclick мы можем записывать только название процедуры без...

Как правильно настроить pagefile.sys и выставить параметры под свои характеристики?
В связи с необходимостью создать файл подкачки для лучшего понимания возникновения "синих экранов смерти" залезла в настройки...

Как в Joomla 3 задать свои стили отдельному материалу?
Есть конкретный материал. К нему надо привязать css стили. Т.е, надо, чтобы стили для этого материала применялись не из общего шаблона, а...

12
...
 Аватар для ji2n
39 / 37 / 13
Регистрация: 08.10.2016
Сообщений: 173
01.01.2017, 23:03
тут как-бы топик про VB.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
02.01.2017, 12:48
А в VB есть компонент RichTextBox.
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 65
02.01.2017, 20:13  [ТС]
Catstail, может чего подскажешь?! А то не получается у меня с Ричем справиться)))
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.01.2017, 06:25
Лучший ответ Сообщение было отмечено Don Leno как решение

Решение

Код 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 Мб, 25 просмотров)
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38193 / 21126 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
03.01.2017, 08:36
Don Leno, я не совсем понимаю суть проблемы. Текст в формате RTF создается для последующего отображения? Если так, то чем не устраивает то, что получается?
1
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 65
03.01.2017, 20:40  [ТС]
Catstail, верно, мне просто надо добавить туда свои параметры))) Но я имел ввиду как полностью с нуля создать ртф текст и со всеми параметрами закинуть в Рич. Но все равно спс за подсказку
fever brain, спасибо за полный ответ и исходники. Оч рад что помогли)))))

Добавлено через 5 минут
fever brain, Вопрос а что в ресурсном файле?
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
04.01.2017, 04:19
Цитата Сообщение от Don Leno Посмотреть сообщение
fever brain, Вопрос а что в ресурсном файле?
Манифест для компонента VBCCR12.OCX и тем Windows, это чтобы после компиляции
программа не требовала регистрации, не прикапывалась с UAC-ом и отображала кнопки в той-же самой теме что использует Windows
мой личный проект с заготовкой в котором все универсальные контролы (юникодные! ). не только RichtextBox ...
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 65
05.01.2017, 08:17  [ТС]
Одного не пойму зачем нужна строка
Visual Basic
1
  RichTextBox1.TextRTF = Replace(rtf, "[vbCrLf]", vbCrLf)
если можно вместо "[vbCrLf]" прям в переменной сразу вставить символы перевода строки (vbCrLf)?! Тем самым отпадает необходимость лишнего кода Replace.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
05.01.2017, 08:39
Цитата Сообщение от Don Leno Посмотреть сообщение
Одного не пойму зачем нужна строка
Ну это для наглядности, тебе же надо было показать как задать свои параметры RTF
я продемонстрировал один из способов, а можно было еще при входе-выходе программы хранить
отдельный файл RTF не только с заготовленным текстом, а изменяемым в процессе пользования ..
если хранить в отдельном файле то да, там символ новой строки не важен, сейчас попробую поменять программу для этого
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
05.01.2017, 09:24
Вот другой вариант, теперь все сохраняется
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 Мб, 11 просмотров)
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
05.01.2017, 09:28
и в Word-е тоже читается
Миниатюры
Как задать свои параметры RTF?  
0
09.01.2017, 00:38

Не по теме:


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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2017, 00:38
Помогаю со студенческими работами здесь

Как на графике в Excel задать свои значения по оси X (а не просто подписать ось)?
Добрый день! Excel 2010. Создаю график, предположим, функции y = 0.5 x, по таблице значений. Соответственно, у меня есть таблица...

Наследование от DataGridView. Как задать свои значения по умолчанию для стилей ячеек и др свойств?
Всем привет. Я хочу создать контрол унаследованный от DataGridView. Весь функционал тот же, меняется только стили ячеек и некоторые...

Как задать параметры переменной?
Можно ли в начале кода задать параметр переменной int, которая внедряется в массив и не выходит из диапазона, например, от 0 до 20 , что...

Как задать правильно параметры?
if ($stmt_1 = $mysqli->prepare("UPDATE `bd` SET `field`='".$ch_1."' WHERE `id`=?")) { $stmt_1->bind_param("i", $p_id); ...

Как задать параметры в задаче?
Дан массив размера n и чесло к (0<k<5, k<n) осуществить цикличекий сдвиг элементов массива на л позиций. Добавлено через 33 секунды ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru