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

  • Автор темы Eten
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

Eten

#1
Возможно ли в компоненте RichEdit или Memo сделать (программно естессно) выделенным заданный кусок текста в строке. Можно ли выделить другим цветом? И если можно, то как?
Пишу что-то вроде поисковика в текстовом редакторе, наподобии того, что в ворде. Найденное слово как раз и необходимо выделить
 
B
#2
Для RichEdit возможно и выделить и поменять для какогото куски текста цвет шрифта. Для этого просматриваешь весь текст и когда находишь необходимый кусок наносишь его позицию в SelStart размер текста в SelLength, и делаешь с выделенным текстом что хошь. Если для поисковика то тут может возникнуть проблема как вернуть всё обратно :D .

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

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

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

Eten

#3
<!--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]
Спасибо за ответ, так и сделал. Пришлось добавить в главную форму Диалог шрифта и поставить в нем красный. Код выглядит так:
Код:
 Form1->RichEdit1->SelAttributes->Assign(Form1->FontDialog1->Font);
Обратно все возвращается тоже элементарно.
Теперь стоит другая задача: нужно выделить фон заданного куска текста. Решил сделать по аналогии. Добавил диалог выбора цвета, установил в нем нужный цвет, но ничего не компилируется:
Код:
 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]
А у меня это сочетание клавиш не работает...
 
B
#4
<!--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]

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