Приветствуем на Форум Херсона. Форум Херсонской молодежи.. На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру! Если возникнут проблемы с регистрацией напишите нам. |
|
Программирование Все вопросы по написанию программ |
|
Опции темы |
06.05.2008, 19:47 | #1 (Ссылка на пост) |
Мимо проходил
|
поиск в RichEdit
помогите плиз, бо я не очень шарю в Delphi)
есть функция, которая осуществляет поиск и выдиление определенного текста в RichEdit, всё в ней хорошо, но... она выделяет только одно(последние) из найденых слов( Как сделать так, чтобы она выделяла все найденные слова? function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean; var StartPos, Position, Endpos: Integer; begin StartPos := 0; with RichEdit do begin Endpos := Length(RichEdit.Text); Lines.BeginUpdate; while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do begin Endpos := Length(RichEdit.Text) - startpos; Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]); Inc(StartPos, Length(SearchText)); SetFocus; SelStart := Position; SelLength := Length(SearchText); end; Lines.EndUpdate; end; end; |
|
06.05.2008, 21:05 | #2 (Ссылка на пост) | ||||||||
Модератор
Пол:
Благодарил(а): 30,810
Благодарили 37,603 раз в 8,037 постах
Галерея:
0
Вес репутации: 401
|
вооружайся книгами и справочной системой и вперед
вот можешь такое вот выделение бэкграунда использовать, как маркер в ворде uses RichEdit; procedure RE_SetSelBgColor(RichEdit: TRichEdit; AColor: TColor); var Format: CHARFORMAT2; begin FillChar(Format, SizeOf(Format), 0); with Format do begin cbSize := SizeOf(Format); dwMask := CFM_BACKCOLOR; crBackColor := AColor; Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); end; end; Последний раз редактировалось ustas, 06.05.2008 в 21:07. |
||||||||
|
07.05.2008, 09:33 | #3 (Ссылка на пост) | |||||||||
Местные мы
Пол:
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея:
0
Вес репутации: 23
|
Цитата:
Пример случаем не с delphisources брал ? Смотри, попробуй открыть там блокнот с текстом и попробуй выделить несколько слов, наверное не выйдет. Так как выделить можно один цельный кусок (вот у тебя и выходит выделенное последнее слово). Тебе наверное кроме выделения нужно поменять цвет текста - это более реально и наглядно. То есть, когда у тебя есть выделенный кусок после: SelStart := Position; SelLength := Length(SearchText); Там должно быть проперти типа SelAttributes а у него есть Color. То есть так: SelStart := Position; SelLength := Length(SearchText); SelAttributes.Color := someColor; Так как при каждом новом SelStart := Position; - будет теряться предыдущее выделение. PS. А вот работает ли сам код поиска - я не знаю. Так стремно написан... я еще и Делфи совсем забыл то. |
|||||||||
|
Сказали Спасибо пользователю Marchello за этот пост: | ustas (07.05.2008) |
07.05.2008, 12:33 | #4 (Ссылка на пост) | |
Мимо проходил
|
Цитата:
ЗЫ код рабочий) |
|
|
Здесь присутствуют: 1 (пользователей - 0 , гостей - 1) | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск родных... | Rammf | Архив | 8 | 16.08.2007 18:09 |
Поиск квартиры | Neo | Общие | 2 | 29.09.2005 19:33 |
Поиск кряка | Фидель | Програмное обеспечение | 4 | 28.11.2004 07:41 |