Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1257248002
XXL
2009-11-03 14:33
2010.01.03
Посоветуйте пожалуйста skin-движок


15-1257172006
Loky1984
2009-11-02 17:26
2010.01.03
Не запускается Delphi6


2-1258002658
Sw
2009-11-12 08:10
2010.01.03
String


11-1209885490
ForestGamp
2008-05-04 11:18
2010.01.03
OnQueryEndSession


15-1256640147
ZeroDivide
2009-10-27 13:42
2010.01.03
IsDelphiDead.com





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский