Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2009, 10:07   #1
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию Как работать с шрифтами в RichEdit

Вот столкнулся с проблемой как в RichEdit зделать опредиленые мне слова жирнее и другим цветом. Например я пишу
var
begin
if then else
end
нужно чтобы эти стлова не какие либо другие стали такими
var
begin
if then else
end
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 06.09.2009, 10:22   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Если надо именно подсветку синтаксиса, то попробуйте библиотеку SynEdit.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 06.09.2009, 10:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

юзайте поиск по форуму.
Поиск: Ключевые слова: RichEdit, выделение

___________________________________ _____________________
Greblin, кстати, +1
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.09.2009, 10:36   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну типа этого:
Код:
procedure ColorSyntax(_RichEdit:Trichedit;str:string;color:tcolor;bold:boolean);
var
i,j,k:integer;
ccolor:tcolor;
begin
for i := 0 to _RichEdit.Lines.Count - 1 do
begin
  if pos(str,_RichEdit.Lines.Strings[i])<>0 then
  begin
     _RichEdit.SetFocus;
     j:=_RichEdit.SelStart;
     k:=_RichEdit.SelLength;
     ccolor:=_RichEdit.SelAttributes.Color;
     _RichEdit.SelStart := SendMessage(_RichEdit.Handle, EM_LINEINDEX, i, 0)+pos(str,_RichEdit.Lines.Strings[i])-1;
     _RichEdit.SelLength := Length(str);
     if _RichEdit.SelAttributes.Color<>color then
     _RichEdit.SelAttributes.Color:=color;
     if bold then
     _RichEdit.SelAttributes.Style:=_RichEdit.SelAttributes.Style+[fsbold];
     _RichEdit.SelStart:=j;
     _RichEdit.SelLength:=k;
     _RichEdit.SelAttributes.Color:=ccolor;
     _RichEdit.SelAttributes.Style:=_RichEdit.SelAttributes.Style-[fsbold];
  end;
end;
end;

procedure TForm1.RichEdit1Change(Sender: TObject);
begin
   ColorSyntax(Richedit1,'var',clred,true);
   ColorSyntax(RichEdit1,'begin',clred,true);
   ColorSyntax(RichEdit1,'if',clred,false);
   ColorSyntax(RichEdit1,'then',clred,false);
   ColorSyntax(RichEdit1,'else',clred,false);
   ColorSyntax(RichEdit1,'end',clred,true);
end;
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 06.09.2009 в 10:40.
russian-stalker вне форума Ответить с цитированием
Старый 06.09.2009, 14:56   #5
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

russian-stalker
Ваш метод будет работать крайне медленно. Если уж на то пошло, то в редакторах с подсветкой синтаксиса обрабатываются только те строки, которые в данный момент помещаются на экране
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 06.09.2009, 14:59   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Я это как пример, просто дописывать лень было. А дерганость в работе присутствует
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.09.2009, 15:37   #7
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Greblin обьясни пожалуйста как работать с SynEdit
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 06.09.2009, 16:06   #8
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Устанавливать компоненты умеете? А дальше всё просто. Появляется две вкладки компонентов - на одной сами редакторы (SynMemo и SynEdit) и всякие примочки, а на другой невизуальные для разных языков. Кидаете SynEdit на форму, кидаете нужный Highlighter и связываете их через свойство Highlighter SynEdit'а
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со шрифтами в английском Windows. Gestein Windows 4 22.08.2010 19:34
Не могу найти макрос, ошибка со шрифтами и поиск! Ilya87 Microsoft Office Excel 15 14.01.2009 05:43
Проблема с кодировками, шрифтами.. Gauss Общие вопросы Delphi 13 16.02.2008 23:16
проблема со шрифтами Gambler Microsoft Office Word 0 29.10.2006 21:35