Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.11.2010, 08:30
windrunner windrunner вне форума
Прохожий
 
Регистрация: 30.11.2010
Сообщения: 6
Репутация: 10
По умолчанию RichEdit и форматирование текста

Никак не могу выделить нужный текст.
Я делаю что то типо отладчика.
Заношу ключевые слова (кодовые) в массив Code[0..7] of string;
Вот
code[0]:='n';
code[1]:='%';
code[2]:='P';
code[3]:='DR';
code[4]:='IFR';
code[5]:='T';
code[6]:='ConnIP';
code[7]:='ClsIP';

1. Мне нужно чтоб эти слова в RichEdit выдедялись жирным цветом
2. Сразу после n, %, P значения должны оставаться обычными. то есть nНаименование.
3. После ";" текст был синим
Я бьюсь уже полдня. Никак не выходит

Если не обращать внимания на то, что выделяется что попало в Richedit
загвостка еще в том, что не может быть n[/b]Наименование1 потом еще n[/b]Наименование2 в одной строке.

Как думаете лучше сделать? Сделать массив из Char и сравнивать посимвольно первые 6 позиций?

И как обращаться к символам в RichEdit подскажите???? Например 1 символ в i строке...
RichEdit1.Lines[i][1] Не выходит. Выкидывает сразу.
Ответить с цитированием
  #2  
Старый 30.11.2010, 12:52
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Вот пример подсветки синтаксиса делфи (то бишь, как и в ващем случае, например "end" выделит, а точку с запятой после end 'a нет:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const   
  word: array[1..32] of string[15] = ('if','then','else','begin','end','for','to',
    'do','while','repeat','until','case','of','type','var','const','procedure',   
    'function','array','string','unit','interface','uses','class','private',
    'public','implementation','in','and','or','xor','not');
  comment: array[1..6] of string[2] = ('{','}','(*','*)','//',#13#10);
var
  k,k1,i: integer;
begin
  for i:=1 to length(word) do
    begin
      k:=-length(word[i]);
      repeat
        k:=RichEdit1.FindText(word[i],k+length(word[i]),
           length(RichEdit1.Text)-k-length(word[i]),[stWholeWord]);
        RichEdit1.SelStart:=k;
        RichEdit1.SelLength:=length(word[i]);
        RichEdit1.SelAttributes.Style:=[fsBold];
        RichEdit1.SelAttributes.Color:=clNavy;
      until k < 0;
    end;
  for i:=0 to 2 do
    begin
      k1:=-length(comment[i*2+1]);
      repeat
        k:=k1;
        k:=RichEdit1.FindText(comment[i*2+1],k+length(comment[i*2+1]),
           length(RichEdit1.Text)-k-length(comment[i*2+1]),[stMatchCase]);
        k1:=RichEdit1.FindText(comment[i*2+2],k+length(comment[i*2+2]),
            length(RichEdit1.Text)-k-length(comment[i*2+2]),[stMatchCase]);
        RichEdit1.SelStart:=k;
        RichEdit1.SelLength:=k1-k+length(comment[i*2+2]);
        RichEdit1.SelAttributes.Style:=[fsItalic];
        RichEdit1.SelAttributes.Color:=clNavy;
      until k < 0;
    end;
end;

ЗЫ обращаться к символу можно либо так: RichEdit1.Text[i] либо как в написали (будет работать): RichEdit1.Lines.Strings[i][k].
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 01.12.2010, 11:36
windrunner windrunner вне форума
Прохожий
 
Регистрация: 30.11.2010
Сообщения: 6
Репутация: 10
По умолчанию

v1s2222

Долго не было ответов и я нашел порывшись часок сам. Все равно спасибо за внимание!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter