Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 17:13   #1
vinc2000
Пользователь
 
Аватар для vinc2000
 
Регистрация: 31.01.2012
Сообщений: 47
По умолчанию Неадекватный поиск в RxRichEdit

Здравствуйте. Имеется RxRichEdit v. 2.75 как основной текстовый редактор (вшит в прогу). От Rich'a отказался не только из-за картинок. Все бы ничего - только поиск работает некорректно. Заметил что в RichEdit'e все нормуль, а вот в RX'e с каждой новой строчкой он выделяет на 1 символ больше справа, т.е. корректно ищет только в 1-й строчке, а далее выделяет неадекватно. Сам код:

Код:
procedure TForm2.sBitBtn8Click(Sender: TObject);
begin
RxRichEdit1.WordWrap:=False; //Выключаем перенос для "адекватного" поиска
RxRichEdit1.SelStart:=0; //Каретка в начало документа
Form2.RxRichEdit1.SetFocus; //Передаем фокус редактору
SPos := RxRichEdit1.SelStart; //Поиск начинается со стартовой позиции редактора
with FindDialog1 do
begin
    FindText := RxRichEdit1.SelText; //Поиск введенного текста
    Form2.RxRichEdit1.SelLength:=Length(Finddialog1.FindText);//Определяется длина текста для поиска. Ошибка может быть здесь...
    Position := Point(Form2.left + 220, Form2.Top + 180);//Позиция окна поиска. Не совсем удачно но зато по центру программы
    Options := Options + [frHideUpDown, frHideWholeWord];//Доступны кнопки Далее и с Учетом регистра
    Execute;//Выполнение
end;
end;
Думаю что трабла в SelText'e, ну не переваривает RX эту функцию. Вопрос: Как при поиске с каждой новой строчкой сделать так чтобы выделение смещалось на 1 символ левее, а не правее?

P.S. Кстати кому интересно - пишу медиа-центр. Все подробности здесь.
Мне осталась одна забава - пальцы в рот, да веселый свист - прокатилась дурная слава, что похабник я, и скандалист.
vinc2000 вне форума Ответить с цитированием
Старый 03.05.2012, 02:15   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

А где сам поиск? Проверка никаких "трабл" не обнаружила.
Вот переделанный (под RxRichEdit) пример из дельфийской справки.
Код:
procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  if RxRichEdit1.SelLength <> 0 then
    StartPos := RxRichEdit1.SelStart + RxRichEdit1.SelLength
  else
    StartPos := 0;
  ToEnd := Length(RxRichEdit1.Text) - StartPos;

  FoundAt := RxRichEdit1.FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
  if FoundAt <> -1 then begin
    RxRichEdit1.SetFocus;
    RxRichEdit1.SelStart := FoundAt;
    RxRichEdit1.SelLength := Length(FindDialog1.FindText);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  FindDialog1.FindText := RxRichEdit1.SelText; 
  FindDialog1.Position := Point(left + 220, Top + 180);
  FindDialog1.Options := FindDialog1.Options + [frHideUpDown, frHideWholeWord];
  FindDialog1.Execute;//Выполнение
end;
Результат на картинке.
Изображения
Тип файла: png 001.png (9.9 Кб, 46 просмотров)

Последний раз редактировалось Прик; 03.05.2012 в 02:17.
Прик вне форума Ответить с цитированием
Старый 03.05.2012, 11:55   #3
vinc2000
Пользователь
 
Аватар для vinc2000
 
Регистрация: 31.01.2012
Сообщений: 47
По умолчанию

Спасибо! Полдня бился с поиском а оказывается его и не было вовсе.
Мне осталась одна забава - пальцы в рот, да веселый свист - прокатилась дурная слава, что похабник я, и скандалист.
vinc2000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RxRichEdit Кристинка89 Общие вопросы Delphi 3 04.08.2011 14:47
Поиск текста в JvxRichEdit(RxRichEdit) roperd Общие вопросы Delphi 3 04.08.2011 14:23
RxRichEdit rzawm Компоненты Delphi 11 11.04.2010 19:50
Параграф в rxrichedit Михаил Юрьевич Общие вопросы Delphi 4 20.11.2009 02:07