Хм...выяснил, что все работает и без танцев с бубнами простой настройкой окна RichEdit (изменение опции
hideSelection в
False). Но проблема со смещающимся выделением осталась. Видимо это проблема обработки текста. Был бы признателен за советы мудрых и бывалых.
На текущий момент процедуру вернул обратно:
Код:
procedure TForm1.FindDialog1Find(Sender: TObject);
begin
with FindDialog1 do
begin
RichEdit1.SelStart := Pos(AnsiLowerCase(FindText),
AnsiLowerCase(Copy(RichEdit1.Lines.Text, SPos + 1, Length(RichEdit1.Lines.Text)))) + SPos - 1;
if RichEdit1.SelStart >= SPos then
begin
RichEdit1.SelLength := Length(FindText); { Выделение найденного текста }
SPos := RichEdit1.SelStart + RichEdit1.SelLength + 1; { Изменение начальной позиции поиска }
//RichEdit1.Perform(EM_SCROLLCARET,0,0);
//RichEdit1.SetFocus;
end
else
if MessageDlg('Текст "' + FindText + '" не найден. Продолжать поиск?',
mtConfirmation, mbYesNoCancel, 0) <> mrYes then
CloseDialog;
end;
RichEdit1.SetFocus;
end;