Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

Как сохранить цветовое выделение текста в TRichEdit?   Найти похожие ветки 

 
Alex_C ©   (2006-09-25 13:41) [0]

Есть TRichEdit в котором цветом автоматически выделяются ключевые слова. При добавлении нового текста в конец иимеющегося
RichEd.Text := RichEd.Text+IputChar;
цветовое выделение теряется и приходится снова весь текст просматривать и выделять ключевые слова. Как можно этого избежать?
Есть такой вариант, при котором не теряется цветовое выделение текста:
RichEd.SelStart := Length(RichEd.Text);
RichEd.SelLength := 0;
RichEd.SelText := InputChar;
но он не подходит ввиду того, что не позволяет в это время пользователю самому выделять текст.


 
clickmaker ©   (2006-09-25 14:01) [1]


> не позволяет в это время пользователю самому выделять текст

то есть? У тебя RichEd.SelText := InputChar; в отдельном потоке, да еще так долго, что пользователь может успеть что-то выделить?


 
Alex_C ©   (2006-09-25 14:17) [2]

Поясню ситуацию:
из устройства данные выводятся на RichEdit. Пользователь же в это время должен иметь возможность выделить допустим кусок текста и скопировать его. Данные с ус-ва поступают постоянно. Если пользоваться 2 методам, то у пользователя не получается выделить текст - SelStart то все время меняется.


 
clickmaker ©   (2006-09-25 14:27) [3]


> не получается выделить текст - SelStart то все время меняется

а сохранить, а потом восстановить?


 
Alex_C ©   (2006-09-25 14:29) [4]

Некрасиво получается. Вот представь - все время добавляется из ус-ва информация. Сохранять и восстанавливать SelStart - все время выделение мигает, пока пользователь выделяет текст.


 
clickmaker ©   (2006-09-25 14:35) [5]

а RichEdit.Lines.Add не поможет?


 
Alex_C ©   (2006-09-25 15:16) [6]

Нет
При этом добавляется НОВАЯ строка, а мне надо чтоб было продолжение существующей.


 
clickmaker ©   (2006-09-25 15:19) [7]

Ну звиняй, варианты кончились.
Разве что попробовать [3], но окружить вызовами
SendMessage(RE.Handle, WM_SETREDRAW, 0, 0);
...
SendMessage(RE.Handle, WM_SETREDRAW, 1, 0);
чтобы не мерцало


 
Alex_C ©   (2006-09-25 15:31) [8]

А вот интересно, где у RichEdit хранится информация об аттрибутах каждой буквы? По идее ведь каждая буква может свой цвет, фонт и т.п. иметь? В св-ве Text хранится только сам текст, а где хранятся аттрибуты каждой буквы?


 
clickmaker ©   (2006-09-25 15:37) [9]


> [8] Alex_C ©   (25.09.06 15:31)

с точки зрения программера в SelAttributes
ну а так, это часть формата RTF. В тэгах. В этом смысле ртф слегка напоминает html


 
Alex_C ©   (2006-09-25 16:45) [10]

Видел как работают другие программы. В них все очень быстро и подсветка синтаксиса, и позволяют добавлять текст, сохраняя аттрибуты старого текста. Вроде простая задама, а вот в инете порылся - решения простого для нее нет.


 
clickmaker ©   (2006-09-25 16:47) [11]


> [10] Alex_C ©   (25.09.06 16:45)

другие программы могут и не использовать richedit


 
Alex_C ©   (2006-09-25 17:06) [12]

свой компонент?
не понятно зачем так сделано, чтоб при добавлении текста все аттрибубы что были менять на исходные.


 
clickmaker ©   (2006-09-25 17:14) [13]

RichEd.Text := RichEd.Text+IputChar;
этой строчкой ты фактически полностью меняешь содержимое, причем, именно текст, а форматирование естесственно теряется.
Как вариант можно попробовать
S := RichEdit1.Lines[RichEdit1.Lines.Count-1];
S := S + "Some text";
RichEdit1.Lines[RichEdit1.Lines.Count-1] := S;

тогда, по крайне мере, только у последней строки собьется формат



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.051 c
6-1149699693
Whitevova
2006-06-07 21:01
2006.11.05
Как передать голос по сети и ..., Internet


2-1161342004
Alex_C
2006-10-20 15:00
2006.11.05
Как отключить реакцию на двойной клик мышью?


2-1161612005
stud
2006-10-23 18:00
2006.11.05
вечер уже ничего не понимаю, помогите!!!


2-1160909274
Footballer
2006-10-15 14:47
2006.11.05
отправка файла


2-1161511352
sss1
2006-10-22 14:02
2006.11.05
ShellExecute





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский