Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Lifebinder
9 / 9 / 2
Регистрация: 04.10.2009
Сообщений: 105
1

Контейнер с форматированным текстом и изображениями

28.03.2012, 02:20. Просмотров 886. Ответов 7
Метки нет (Все метки)

Доброй ночи.
Вопрос такой - существует ли в билдере стандартный компонент, который сможет принять:
текст с разным форматированием
и изображения?
слышал про TRichEdit, но никогда им не пользовался.
Может кто-нибудь сможет накидать примерчик небольшой по осуществлению моей заоблачной мечты?)
ну в крайнем случае, хотябы подкиньте вариант "извращений" для реализации всего этого

Заранее благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 02:20
Ответы с готовыми решениями:

Печатные формы с форматированным текстом
Есть такая проблема: нужно на основе некоторых данных 1С-бухгалтерии 7.7, сформировать полноценный...

Операции над .doc и .txt файлами: работа с форматированным текстом
Доброго всем времени! Небольшое лирическое вступление, т.к. не знаю как нормально начать. ...

Listbox с изображениями и текстом
Нужно чтобы а листбоксе было изображение а потом текст после него шел.

Многомерный массив с изображениями (и текстом)
Добрый вечер! Столкнулся с очередной проблемой. Есть многомерный массив, включающий в себя...

Как увеличить всю страницу пальцами, вместе с кнопками текстом и изображениями?
как увеличить всю страницу пальцами, вместе с кнопками текстом и изображениями. что бы все...

7
DefineTrueFalse
870 / 447 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.03.2012, 02:34 2
Подсветка синтаксиса в TMemo
About Rich Edit Controls [MSDN]
0
Lifebinder
9 / 9 / 2
Регистрация: 04.10.2009
Сообщений: 105
28.03.2012, 09:13  [ТС] 4
спасибо за помощь, но как с изображениями быть, так и не понял
0
28.03.2012, 09:13
LK
Заблокирован
28.03.2012, 09:15 5
С ричэдит - никак.
Зависит от задачи, если не предполагается редактирование текста, можно использовать CppWebBrowser и файлы/код html .
0
Lifebinder
9 / 9 / 2
Регистрация: 04.10.2009
Сообщений: 105
29.03.2012, 03:24  [ТС] 6
Интересная особенность.
SelStart начинает выделять нужный текст с того символа, в какой строке стоит это слово.
То есть если строка третяя, то он и выделять начнет с третьего символа, а не с первого.
Если строка вторая, то со второго символа.
Скрин прилагается.

Как избавиться от этого?

P.S.:
Собственно мне нужно просто создать такую функцию, которая будет добавлять строку с текстом в ричЭдит и сразу его, текст, разукрашивать и форматировать. Попытался сделать, чтобы выделялся текст не как обычно SelStart=int_pos-1, а так:
C++
1
2
RichEdit1->Lines->Add(word);
RichEdit1->SelStart = int_pos-1-RichEdit1->Lines->Count;
но если текст оказывается длинным и переносится на следующую строку, проблема опять остается ><
0
Миниатюры
Контейнер с форматированным текстом и изображениями  
DefineTrueFalse
870 / 447 / 35
Регистрация: 25.10.2011
Сообщений: 910
29.03.2012, 04:26 7
SelStart не работает со строкой, отчет начинается с начала документа. А разница происходит из-за двух символов, служающих для переноса строки. Поэтому начальная позиция в строке = сумме количества символов всех предыдущих строк + (количеству строк * множитель).

Примечание: в качестве символов переноса используется \n или \r\n. Соотвественно, в первом случае множитель будет 1 (т.е. просто количество строк), а во втором множитель будет 2.

При этом, необходимо помнить, что функции:
C++
1
2
RichEdit1->Lines->Text.Length();
RichEdit1->Text.Length();
Могут давать разные результаты, т.к. первая всегда возвращает длину текста + перенос на новую строку (если такового не имелось).
C++
1
2
RichEdit1->Lines->Text.Length(); // = 3
RichEdit1->Text.Length(); // = 1
C++
1
2
RichEdit1->Lines->Text.Length(); // = 9
RichEdit1->Text.Length(); // = 7
0
Lifebinder
9 / 9 / 2
Регистрация: 04.10.2009
Сообщений: 105
30.03.2012, 03:04  [ТС] 8
Как это говорится - "писать индокод" я мастер

Вот примерно так получилось
p.s. на кол меня

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
void write(WORD color, int bold, AnsiString word)  
{
 int c = Form1->RichEdit1->Lines->Count;
 Form1->RichEdit1->Lines->Add(word);
 int dc=Form1->RichEdit1->Lines->Count-c;
 if (dc>1)
    LineCounter=LineCounter+dc-1;
 
 Form1->RichEdit1->SelStart=Form1->RichEdit1->Text.Length()-Form1->RichEdit1->Lines->Count-1-word.Length()+LineCounter;
 Form1->RichEdit1->SelLength=word.Length()+1;
 
 if (bold==1)Form1->RichEdit1->SelAttributes->Style = Form1->RichEdit1->SelAttributes->Style << fsBold;
 Form1->RichEdit1->SelAttributes->Color=color;
}
//---------------------------------------------------------------------------
Вроде все стабильно работает, и слава Богу

P.S. Ах да, еще вопрос: цвет не всегда верно распознает. есть такие цвета, например clRed, clYellow, clLime и еще парочка, с которыми он умеет работать. А например с цветами clGray, clWhite, clBlue и многими другими компилятор поступает по-свински. Красит то верхнюю от нужной строчки, то нижнюю. То вообще не красит. Если же использую на ту же строчку допустим цвет clRed, красит на "ура".

Добавлено через 14 минут
Проблема с цветом решилась легко.
Использую не WORD , а TColor.
Всем спасибо, кто помог
0
30.03.2012, 03:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2012, 03:04

Как создать открывающиеся окна с текстом и изображениями при нажатии на кнопку
Суть приложения: при нажатии на кнопку открывается окошко с текстом и картинкой. Окно не должно...

Беда с форматированным выводом
Есть задание и оно звучит так: Решил задачу двумя способами, но не работает всё равно....

Поиск файлов с форматированным выводом
Здравствуйте. Стоит задача, в freebsd системе найти все файлы СОЗДАННЫЕ и ИЗМЕНЁННЫЕ за последние 4...


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

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

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