Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
ВнизКак доработать функцию поиска, для работы в цикле? Найти похожие ветки
← →
Андрей Смирнов (2009-11-12 07:19) [0]Всем Привет,
Нашел в сети код функции:function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string):
boolean;
var
Position: Integer;
begin
with RichEdit do
begin
RichEdit.Lines.BeginUpdate;
Position := FindText(SearchText, 0, Length(RichEdit.Text), [stMatchCase]);
if Position > -1 then
begin
SetFocus;
SelStart := Position;
SelLength := Length(SearchText);
SelAttributes.Color := clRed;
SelAttributes.Style := [fsBold];
Result := true;
end
else
Result := false;
RichEdit.Lines.EndUpdate;
end;
end;
Проверил его, функция исправно находит искомое вхождение строки и выделяет найденное Жирным-Красным цветом!
Но есть одно но, она находит самое первое вхождение, или только уникальное!
Как доработать функцию, для работы в цикле? Чтобы она находила все искомые вхождения строки, + в функцию ввести счётчик найденного!
С Уважением, Андрей!
← →
Думкин © (2009-11-12 07:38) [1]
> FindText(SearchText, 0,
?
← →
Андрей Смирнов (2009-11-12 07:43) [2]
> Думкин © (12.11.09 07:38) [1]
Endpos
← →
Андрей Смирнов (2009-11-12 07:48) [3]вот так ужо лучше?
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string;
var StartPos: integer): Boolean;
var
Position, Endpos: Integer;
begin
result := False;
with RichEdit do
begin
Endpos := Length(RichEdit.Text);
Lines.BeginUpdate;
if FindText(SearchText, StartPos, Endpos, [stMatchCase]) <> -1 then
begin
Endpos := Length(RichEdit.Text) - startpos;
Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]);
Inc(StartPos, Length(SearchText));
SetFocus;
SelStart := Position;
SelLength := Length(SearchText);
StartPos := SelStart + SelLength;
result := True;
end;
Lines.EndUpdate;
end;
end;
теперь вроде все нормально, работает как FindSearch, осталось цикл прикрутить!
← →
Андрей Смирнов (2009-11-12 11:36) [4]Столкнулся с такой загвоздкой,
При проходе выше приведенной функцией, найденные вхождения подкрашиваться красным и выделяются жирным шрифтом, все то что я и хотел, но...
Как сбросить атрибуты текста в RichEdit?
Чтобы в RichEdit"е убрать все выделения и цвет!
← →
Андрей Смирнов (2009-11-12 11:58) [5]сделал так:
SearchRichEdit.SelectAll;
SearchRichEdit.SelAttributes.Color := clWindowText;
SearchRichEdit.SelAttributes.Style := [];
Вроде все работает)
Правильно или нет?
← →
brother © (2009-11-12 11:59) [6]пойдет...
← →
Anatoly Podgoretsky © (2009-11-12 13:25) [7]> Андрей Смирнов (12.11.2009 11:58:05) [5]
Правильно и правильнее нет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c