Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/48: Рейтинг темы: голосов - 48, средняя оценка - 4.96
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
1

Сохранение форматированного текста RichEdit через SaveDialog

06.03.2015, 13:20. Показов 9166. Ответов 74
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Переделал код билдера в лазарус.
Посмотрите пожалуйста так это должно выглядеть?
Вот исходник на билдере:
Сохранение форматированного текста RichEdit через SaveDialog

а вот что я думаю в лазарусе должно быть
C++
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        RichEdit1.SelAttributes.Style =
    Form2.RichEdit1.SelAttributes.Style << fsBold;
 
    RichEdit1.Lines.Add(Edit1.Text);
 
        RichEdit1.Paragraph.Alignment = taRightJustify;
 
    RichEdit1.Lines.Add(Edit2.Text);
 
        RichEdit1.SelAttributes.Assign(Form2.RichEdit1.DefAttributes);
        RichEdit1.Paragraph.Alignment = taLeftJustify;
 
    RichEdit1.Lines.Add(Edit3.Text);
}
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    
        TStringList * Temp = new TStringList;
 
    Temp.Text = RichEdit1.Text;
 
    if(SaveDialog1.Execute())
    {
        Temp.SaveToFile(SaveDialog1.FileName);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2015, 13:20
Ответы с готовыми решениями:

RichEdit и получение от него форматированного текста
Всем привет. Необходимо получить от RichEdit'a текст с форматированием. В сам RichEdit...

Передача форматированного текста из Richedit по сети
Здраствуйте, каким образом передавать форматированный текст созданный в RichEdit по сети через...

Сохранение форматированного текста из richTextBox
Добрый вечер. Подскажите как мне сохранить текст из richTextBox с форматированием? Этот код...

Сохранение форматированного текста в FireBird
Здравствуйте! Не подскажете как сохранить форматированный текст в базе данных вместе с рисунками....

74
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
11.03.2015, 13:17 21
Author24 — интернет-сервис помощи студентам
Я еще раз повторяю: заморочки - на стороне Word-а, при чем тут Лазарус? Попробуй создать просто в Windows Explorer-е текстовый файл, впечатать в него 'test', прямо по английски, и сохранить в кодировке ANSI. А теперь возьми и открой его через Word... И попробуй мне объяснить, какого черта всплывает это окно "Convert File"? Там простой ANSI, никаких заморочек с кодировками же проще? Нет, Word не хочет этого понимать. Что характерно - он не понимает никакую из доступных мне кодировок файла, ему надо, чтоб пользователь ткнул в строчку, и он тупо откроет файл с выбором пользователя.

Так что это тема не для данного раздела форума.

Добавлено через 2 минуты
Цитата Сообщение от barsik123 Посмотреть сообщение
чтобы русский текст сохранялся в файле rtf
Чтобы текст сохранялся в файле RTF, тебе нужен RichEdit, которого у тебя НЕТ. Ты сохраняешь Memo в обычный текстовый файл, не забудь. То, что ты дал ему другое расширение - Word на это не покупается. Структура файла не та, что должна быть у RTF...
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
11.03.2015, 13:43  [ТС] 22
volvo, значит в txt надо сохранять чтобы заморочек не было. без вариантов. или городуху городить с конвертированием. это я пока еще не умею
0
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 10:08  [ТС] 23
volvo, как жешь не удобно! ну почему нельзя было RichEdit в лазарусе сделать?! такой полезный и нужный компонент!

а если конвертировать это там сложно и много переделывать код надо?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 10:47 24
Цитата Сообщение от barsik123 Посмотреть сообщение
ну почему нельзя было RichEdit в лазарусе сделать?! такой полезный и нужный компонент!
Он такой полезный и нужный в Windows - потому что обертка над стандартным виндовым RichEdit-ом. Аналога в Qt (под Linux-ом) для него НЕТ. А поскольку Lazarus - кроссплатформенный продукт - то... Сам понимаешь, подобного допустить нельзя, чтобы компонент был под Windows, не был под Linux, и наоборот.
Цитата Сообщение от barsik123 Посмотреть сообщение
а если конвертировать
Что конвертировать-то?
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 11:29  [ТС] 25
volvo, конвертировать текст русский из поля memo в виндовс кодировку CP1251 и сохранять это в файл rtf сразу. это в виде программного кода сложно будет используя тот самый LConvEncoding про который уже упоминалось? ну чтоб ворд это сразу без лишних заморочек открывал

Добавлено через 12 минут
volvo, примеры в инете посмотрел с LConvEncoding. что-то так сходу сразу и не разберусь.

подсобите простеньким примерчиком пожалуйста
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 11:44 26
Цитата Сообщение от barsik123 Посмотреть сообщение
и сохранять это в файл rtf сразу
У тебя есть полное описание формата RTF? То есть, сохранить в формате RTF - не значит изменить расширение файла на .RTF. Скажем, обычный текст

Hello, world!

в RTF-формате выглядит вот так:
Код
{\rtf1\adeflang1037\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f42\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;
\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs24\alang1037 \ltrch \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs20 \ltrch \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\rsidtbl \rsid2834952}
{\*\generator Microsoft Word 10.0.2627;}{\info{\title Hello, world}{\author Volvo}{\operator Volvo}{\creatim\yr2015\mo3\dy13\hr10\min45}{\revtim\yr2015\mo3\dy13\hr10\min46}{\version1}{\edmins1}{\nofpages1}{\nofwords2}{\nofchars12}{\nofcharsws13}
{\vern16437}}\paperw11906\paperh16838\ltrsect \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot2834952 \fet0\ltrpar 
\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang 
{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7
\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs24\alang1037 \ltrch \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af0 \ltrch \insrsid2834952 Hello, }{\rtlch \ab\ai\af0 \ltrch 
\b\i\insrsid2834952\charrsid2834952 world}{\rtlch \af0 \ltrch \insrsid2834952 !
\par }}
Рискнешь записывать вручную свой текст вот таким образом?
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 12:27  [ТС] 27
volvo, дааа, заковыристо получается. мне такое и не выговорить! ))

но я не совсем это имел в виду.

вот например в том примере что приведен ранее текст сохранялся как UTF8ToSys.
для винды кодировка UTF8ToCP1251, но там еще как-то конвертировать надо. а вот как не совсем понятно из тех примеров что удалось найти. примерчик бы доступный чтобы разобраться можно было!

и еще один вопрос. вот если получится задать нужную кодировку для открытия он все равно будет при открытии файла в ворде спрашивать какую кодировку использовать или сразу будет открывать без лишних заморочек?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 12:47 28
Просто смена кодировки ничего не даст, так же выскочит окошко "Convert File", в котором пользователю будет предложено выбрать кодировку. Так на кой надо извращаться и конвертировать в Win1251, если пользователь может просто выбрать Unicode, в котором текст сохраняется из TMemo из коробки, безо всяких дополнительных преобразований?
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 14:16  [ТС] 29
volvo, выходит нет такой возможности сделать то что я хочу в лазарусе? странно! о_0
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 14:28 30
Цитата Сообщение от barsik123 Посмотреть сообщение
странно!
Вот так вот. Если тебе только под Windows - то работай с RICHEDIT-ом на WinAPI, может, что-то и получится.
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 14:55  [ТС] 31
volvo, Это где-то в настройках лазаруса можно включить?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 15:23 32
Что именно? WinAPI? Подключай в Uses модуль Windows, и работай...
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 15:26  [ТС] 33
volvo, и компонент RichEdit в лазарусе появится?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 15:30 34
Компонента RichEdit не существует. Есть компонент TRichEdit. А RICHEDIT - это стандартный виндовый контрол, и работать тебе с ним придется не в стиле Дельфи (положил компонент на форму, и вызываешь его свойства и методы), а в стиле чистого WinAPI (создавать через CreateWindow, посылать сообщения через SendMessage, и так далее... Вручную)
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 15:38  [ТС] 35
volvo, неее, ну так не пойдет!

говоря словами винни пуха: "это какие-то неправильные пчелы!"
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
13.03.2015, 15:54 36
Я у тебя в самом начале темы спрашивал, что ты конкретно хочешь писать в этот RTF? Ты молчишь, как партизан. Ну, молчи дальше. А между тем я мог бы тебе помочь. Скажем, из вот такого содержимого SynEdit-а:

Сохранение форматированного текста RichEdit через SaveDialog


можно в пару строк кода получить вот такой RTF:
Код
{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fmodern Courier New;}}
{\colortbl}
{\info{\comment Generated by ConTEXT RTF exporter}
{\title Untitled}}
\deflang1033\pard\plain\f0\fs20 \b begin
\par   for \b0 i := 1 \b to \b0 n \b do \b0 writeln('test');
\par \b end\b0 .
\par }
, который прекрасно открывается в Word-е, безо всяких "Convert File":

Сохранение форматированного текста RichEdit через SaveDialog


Ну, молчи дальше... От темы отписываюсь, неинтересно. Как будто это МНЕ надо, а не тебе...
1
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
13.03.2015, 23:54  [ТС] 37
Добавлено через 21 минуту
volvo, теперь правильнее будет сформулировать вопрос о том какой компонент вместо RichEdit использовать чтобы можно было сохранять текст с форматированием в файл odt? от rtf я отказался.
0
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
16.03.2015, 08:08  [ТС] 38
нееее! сюда я больше не ездец! как это TRichEdit нет?! самый нужный базовый компонент и нет! перехожу обратно на c++builder!
0
600 / 548 / 210
Регистрация: 24.01.2012
Сообщений: 1,348
16.03.2015, 08:19 39
Тебе уже писали, как работать с odt. Пока визуальный компонент никто не напишет - просто не будет. А trichmemo ты зря проигнорировал, это будет проще всего.
0
4 / 4 / 0
Регистрация: 26.12.2014
Сообщений: 471
16.03.2015, 08:55  [ТС] 40
edukra, самому добавлять компонент trichmemo в лазарус и потом самому пересобирать лазарус! ну это уже слишком!
0
16.03.2015, 08:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2015, 08:55
Помогаю со студенческими работами здесь

Сохранение форматированного текста в двоичный файл
Здравствуйте. У меня есть объект, который я записываю в бинарный файл. Также есть форматированный...

Сохранение через SaveDialog
Доброго времени! Дан код сохраняющий .bmp в jpg procedure TForm5.Button2Click(Sender: TObject);...

Сохранение через savedialog
Есть программа: записная книжка: дак вот, на ней есть кнопка сохраняющая содержимое memo в...

Сохранение файла через SaveDialog
Здравствуйте, Товарищи Форумчане! Нужна Ваша помощь в вопросе: var ErrTextFile :...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru