Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск в RichEdit 
V
    Опции темы
mauar
Дата 5.5.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



Сделал поиск по RichEdit:
Функция такая :

Код

function SearchText_AndSelect (RichEdit:TRichEdit;SearchText:String):Boolean;   
var  
StartPos,Position,EndPos:Integer;   
begin  
  StartPos := 0;   
  with RichEdit do  
  begin  
    Endpos := Length(RichEdit.Text);   
    Lines.BeginUpdate;   
    while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do  
    begin  
      Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]);   
      Endpos   := Length(RichEdit.Text) - startpos;   
      Inc(StartPos, Length(SearchText));   
      SetFocus;   
      SelStart  := Position;   
      SelLength := Length(SearchText);   
    end;   
    Lines.EndUpdate;   
  end;   
end;  


По нажатиию кнопки выполнить:

Код

SearchText_AndSelect (RichEdit1  , Edit1.Text);  


Поиск идет в RichEdit1 из компонента Edit1.

Как убрать поиск по регистру, а то если слово с заглавной буквы то он это слово не находит.
И как сделать так чтобы RichEdit прокрутился в то место где находится найденное слово.
PM MAIL   Вверх
THandle
Дата 5.5.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Код

function SearchText_AndSelect (RichEdit:TRichEdit;SearchText:String):Boolean;
var
StartPos,Position,EndPos:Integer;
begin
  StartPos := 0;
  with RichEdit do
  begin
    Endpos := Length(RichEdit.Text);
    Lines.BeginUpdate;
    while FindText(SearchText, StartPos, Endpos, [])<>-1 do
    begin
      Position := FindText(SearchText, StartPos, Endpos, []);
      Endpos   := Length(RichEdit.Text) - startpos;
      Inc(StartPos, Length(SearchText));
      SetFocus;
      SelStart  := Position;
      SelLength := Length(SearchText);
    end;
    Lines.EndUpdate;
  end;
end;

PM   Вверх
mauar
  Дата 5.5.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



THandle
Все так же как и было, не работает заглавие и richedit не прокручивается на найденное слово  smile 

Это сообщение отредактировал(а) mauar - 5.5.2008, 14:27
PM MAIL   Вверх
THandle
Дата 5.5.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



У меня вот так вот все отлично ещет:
Код


function SearchText_AndSelect (RichEdit:TRichEdit;SearchText:String):Boolean;
var
StartPos,Position,EndPos:Integer;
begin
  StartPos := 0;
  with RichEdit do
  begin
    Endpos := Length(RichEdit.Text);
    Lines.BeginUpdate;
    while FindText(SearchText, StartPos, Endpos, [])<>-1 do
    begin
      Position := FindText(SearchText, StartPos, Endpos, []);
      Endpos   := Length(RichEdit.Text) - startpos;
      Inc(StartPos, Length(SearchText));
      SetFocus;
      SelStart  := Position;
      SelLength := Length(SearchText);
    end;
    Lines.EndUpdate;
  end;
end;


Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  SearchText_AndSelect(RichEdit1, Edit1.Text);
end;



Например текст в RichEdit:

Цитата


НужНый текст


А в Edit1:

Цитата

нужный


Жмем кнопку - все находит и выделяет слово НужНый
PM   Вверх
mauar
Дата 5.5.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.9.2007

Репутация: нет
Всего: нет



THandle,
Да по заглавию заработало, а как теперь сделать  чтобы  RichEdit прокрутился на найденное слово?  smile 
Все спасибо сдела просто добавил строчку RichEdit1.Perform(EM_SCROLLCARET, 0, 0); в функцию  smile  smile 


Это сообщение отредактировал(а) mauar - 5.5.2008, 14:39
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0619 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.