Выделение текста

  • Автор темы vitalya777
  • Дата начала
V

vitalya777

#1
Я пишу так:


КОД: C/C++

[codebox]void __fastcall TForm1::N4Click(TObject *Sender)
1. 2. {
3. RichEdit1->Font->Size=10;
4. int StartPos, Position=0, Endpos;
5.
6. AnsiString *SearchWords;
7. SearchWords = new AnsiString[5];
8. SearchWords[0]=" while ";
9. SearchWords[2]="end";
10. SearchWords[3]=" While ";
11. SearchWords[4]="End";
12. for(int i=0;i<5;i++)
13. {
14. Position=0;
15. StartPos = 0;
16.
17. Endpos = RichEdit1->Text.Length();
18.
19. while (Position!=-1)
20. {
21. Endpos = RichEdit1->Text.Length() - StartPos;
22. Position = RichEdit1->FindText(SearchWords, StartPos, Endpos, TSearchTypes()<< stMatchCase);
23.
24. RichEdit1->SelStart = Position;
25. RichEdit1->SelLength = SearchWords.Length();
26. RichEdit1->SelAttributes->Style =RichEdit1->SelAttributes->Style<<fsBold;
27. RichEdit1->SelAttributes->Style =RichEdit1->SelAttributes->Style<<fsItalic;
28. StartPos = Position+SearchWords.Length();
29. }
30. }
31.
[/codebox]


Как можно сделать так, чтобы эти слова выделяло только тогда, когда они сами?
Обясняю: просто например в слове Sender слово end тоже выделяет, а мне это не нужно, можно ли как-то это исправить?А если написать в програме " end ", то в слове Sender слово end не выделяется, но когда написать так в тексте : end; , то слово end тоже не выделяется, а это нужно!
 
04.09.2006
2 566
3
#2
Если нужна самопальная подсветка, то нужно использовать более сложные алгоритмы поиска ключевых слов, т.к. они должны располагаться между символами-"разделителями", такими как ";", пробел, конец строки, символы комментариев и т.д.
Если самому писать не нужно, то можно воспользоваться готовыми компонентами, например SynEdit
 
V

vitalya777

#3
выкладите хотя бы кокой-то пример, бо у меня ну никак не получается! Заранее спасибо!