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

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем vitalya777, 1 апр 2008.

  1. vitalya777

    vitalya777 Гость

    Я пишу так:


    КОД: 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 тоже не выделяется, а это нужно!
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Если нужна самопальная подсветка, то нужно использовать более сложные алгоритмы поиска ключевых слов, т.к. они должны располагаться между символами-"разделителями", такими как ";", пробел, конец строки, символы комментариев и т.д.
    Если самому писать не нужно, то можно воспользоваться готовыми компонентами, например SynEdit
     
  3. vitalya777

    vitalya777 Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
Загрузка...

Поделиться этой страницей