Главная страница
    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.019 c
15-1256477905
Leonid Troyanovsky
2009-10-25 16:38
2010.01.03
На Зинчука кто идет?


2-1257934753
kyn66
2009-11-11 13:19
2010.01.03
Запуск программы(только 1 копия)


15-1256980367
DmitriyG.
2009-10-31 12:12
2010.01.03
Виснет Delphi


15-1257013562
POOP
2009-10-31 21:26
2010.01.03
Опять Latex. Texlive


1-1232357960
KiLLiR
2009-01-19 12:39
2010.01.03
Как связать TDateTimePicker с системным временем?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский