powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Раскраска текста
5 сообщений из 5, страница 1 из 1
Раскраска текста
    #32073815
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая проблема: нужно сделать подсветку синтаксиса (например как в Дельфи) при вводе текста.

Вроде как все нормально получается через SelAttributes, но возникает одна проблема - если каждый раз текст программно выделять (SelStart, SelLength) то сильно заметно моргание.

Кто-нибудь знает что с этим можно сделать?
...
Рейтинг: 0 / 0
Раскраска текста
    #32073981
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм ... никто не знает? странно ...
...
Рейтинг: 0 / 0
Раскраска текста
    #32073999
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не понял, про что ты написал.

При чем тут
Код: plaintext
(SelStart, SelLength)
?
...
Рейтинг: 0 / 0
Раскраска текста
    #32074073
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кусок кода для выделения текста полужирным. Есть другой способ?
Код: plaintext
1.
2.
3.
4.
5.
RichEdit1.SelStart:=foundat;
RichEdit1.SelLength:=length(s);
RichEdit1.SelAttributes.Style:=[fsBold];
RichEdit1.SelAttributes.Color:=clBlue;
RichEdit1.SelStart:=RichEdit1.SelStart+length(s);

При таком подходе создается выделенная область и для нее меняется Style. Но косяк в том, что когда создаешь выделение а потом его убираешь, что создается впечатление "моргания". В этом и проблема.
...
Рейтинг: 0 / 0
Раскраска текста
    #32079137
MishailBrodetski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У МЕНЯ ТАКАЯ ЖЕ ПРОБЛЕМА!!!
Что делать, не знаю.
-------------------------------
При загрузке текста из файла все просто: вместо того, при загрузке файла длиной 300 килобайт форматить все таким способом (что занимает полминуты), делаю проще:
tst:tstrings; Stream:TMemoryStream;
tst:=TStringList.Create; tst.LoadFromFile('C:\myname.asm');
Stream := TMemoryStream.Create;
for i:=1 to tst.Count-1 do tst :='\par '+MyFormatStr(tst);
(*MyFormatStr -это моя процедура, которая выделяет все, что нужно, в rtf-формате. Например, для выделения в фразе "ВАСЯ+МАША=СЕРЕЖА" жирным синим цветом слова МАША пишите: "ВАСЯ+\cf1\b МАША\cf0\b0 =СЕРЕЖА\par".*)
tst.Insert(0,'{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset204{\*\fname Courier New;}Courier New CYR;}}{\colortbl ;\red0\green0\blue255;}\viewkind4\uc1\pard\lang1049\f0\fs20'); //типа заголовок rtf-файла
tst.Append('}'); //типа завершение rtf-файла
tst.SaveToStream(Stream);
Stream.Position:=0;
RxRichEdit1.OnChange:=nil;
RxRichEdit1.PlainText:=false;
RxRichEdit1.Lines.LoadFromStream(Stream);
RxRichEdit1.OnChange:= (то, что там раньше было.)

Работает - мгновенно.
-------------------------------

Но что делать с редактированием во сремя работы??????????????
Мигание - черт бы с ним, не так уж заметно, но ведь "UNDO" не работает!!!
Если найдете способ - скиньте его, пожалуйста, на writesoft@yandex.ru.
Заранее благодарен. Михаил.

P.S. Или может кто знает, как из "UNDO" убирать транзакции, или как выделять текст, не занося этого в "UNDO"?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Раскраска текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]