Код выделения текста

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем Eten, 14 июл 2007.

Статус темы:
Закрыта.
  1. Eten

    Eten Гость

    Возможно ли в компоненте RichEdit или Memo сделать (программно естессно) выделенным заданный кусок текста в строке. Можно ли выделить другим цветом? И если можно, то как?
    Пишу что-то вроде поисковика в текстовом редакторе, наподобии того, что в ворде. Найденное слово как раз и необходимо выделить
     
  2. BVS

    BVS Гость

    Для RichEdit возможно и выделить и поменять для какогото куски текста цвет шрифта. Для этого просматриваешь весь текст и когда находишь необходимый кусок наносишь его позицию в SelStart размер текста в SelLength, и делаешь с выделенным текстом что хошь. Если для поисковика то тут может возникнуть проблема как вернуть всё обратно :D .

    Но если нужно только искать текст то в компонентах RichEdit или Memo есть встроенный поисковик, для этого во время работы твоей программы достаточно нажать <CTRL+F>.

    С Memo сложней так как там текст отображается не форматированный, но тоже можно обойти, просто нужно перехватить соответствующие сообщения. При этом способе исчезнет проблема с возвратом в исходное состояние.

    К сожалению у меня сейчас Delphi не стоит и поэтому не мого привести рабочий код.
    Насчет 2 способа (через события) поищи в инете, там этого добра полно.
     
  3. Eten

    Eten Гость

    <!--QuoteBegin-BVS+15:07:2007, 16:36 -->
    <span class="vbquote">(BVS @ 15:07:2007, 16:36 )</span><!--QuoteEBegin-->Для RichEdit возможно и выделить и поменять для какогото куски текста цвет шрифта. Для этого просматриваешь весь текст и когда находишь необходимый кусок наносишь его позицию в SelStart размер текста в SelLength, и делаешь с выделенным текстом что хошь. Если для поисковика то тут может возникнуть проблема как вернуть всё обратно .
    [snapback]72329" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Спасибо за ответ, так и сделал. Пришлось добавить в главную форму Диалог шрифта и поставить в нем красный. Код выглядит так:
    Код (Text):
     Form1->RichEdit1->SelAttributes->Assign(Form1->FontDialog1->Font);
    Обратно все возвращается тоже элементарно.
    Теперь стоит другая задача: нужно выделить фон заданного куска текста. Решил сделать по аналогии. Добавил диалог выбора цвета, установил в нем нужный цвет, но ничего не компилируется:
    Код (Text):
     Form1->RichEdit1->SelAttributes->Assign(Form1->СolorDialog1->Color);
    Как быть?
    <!--QuoteBegin-BVS+15:07:2007, 16:36 -->
    <span class="vbquote">(BVS @ 15:07:2007, 16:36 )</span><!--QuoteEBegin-->Но если нужно только искать текст то в компонентах RichEdit или Memo есть встроенный поисковик, для этого во время работы твоей программы достаточно нажать <CTRL+F>.
    [snapback]72329" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    А у меня это сочетание клавиш не работает...
     
  4. BVS

    BVS Гость

    <!--QuoteBegin-Eten+28:07:2007, 10:33 -->
    <span class="vbquote">(Eten @ 28:07:2007, 10:33 )</span><!--QuoteEBegin-->А у меня это сочетание клавиш не работает...
    [snapback]73657" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Для этого на форму надо поместить ActionList, и добавить в него стандартный элемент поиска в тексте (в Delphi точно есть, а в C++ Builder 5 его не нашел (может в следующие версии добавили))

    <!--QuoteBegin-Eten+28:07:2007, 10:33 -->
    <span class="vbquote">(Eten @ 28:07:2007, 10:33 )</span><!--QuoteEBegin-->Добавил диалог выбора цвета, установил в нем нужный цвет, но ничего не компилируется:
    [snapback]73657" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    А у меня не только компилируется, но и работает
    Код (Text):
     if (ColorDialog1->Execute())
    RichEdit1->SelAttributes->Color = ColorDialog1->Color;
     
Загрузка...
Статус темы:
Закрыта.

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