Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.12.2010, 11:52
windrunner windrunner вне форума
Прохожий
 
Регистрация: 30.11.2010
Сообщения: 6
Репутация: 10
По умолчанию Richedit и поиск

Вроде бы не сложно, но как то глючит.

Хочу организовать поиск как в блокноте (Cntrl-F)

Из Form6, я в Form5.RichEdit1-е при нажатии на кнопку "Искать далее" ищу текст, который находится в Form6.Edit1.text и ставлю курсор в позицию этого текста. При потворном нажатии следующуюю позицию.

Что не так в мое коде кто знает?


Код:
procedure TForm6.FormCreate(Sender: TObject);
begin
k:=0;
end;

procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
k:=0;
end;


procedure TForm6.Button1Click(Sender: TObject);
var mytext:string;
begin

 // Здесь я вырезаю текст из которого буду искать. При первом нажатии k+1=1, т.е. ищется начиная с первой позиции. В следубщий раз от позиции найденного текста + 1 и так далее.

mytext:=copy(Form5.RichEdit1.Text, k+1 ,Length(Form5.RichEdit1.Text)-k-1);

k:=pos(Edit1.text, Mytext);
Form5.RichEdit1.SelStart:=k+1;
Form5.RichEdit1.Perform(EM_SCROLLCARET,0,0);
Form5.RichEdit1.SetFocus;
end;
Ответить с цитированием
  #2  
Старый 01.12.2010, 14:23
ЖабаДушитКота ЖабаДушитКота вне форума
Прохожий
 
Регистрация: 01.12.2010
Сообщения: 9
Репутация: 16
По умолчанию

Код:
var
  mytext: string;
begin
  mytext:=copy(RichEdit1.Text, k+1 ,Length(RichEdit1.Text)-k);
  If pos(Edit1.Text, mytext)<>0 then
    k:=k+pos(Edit1.text, Mytext)
  else
    k:=Pos(Edit1.Text, RichEdit1.Text);
  RichEdit1.SelStart:=k-1;
  RichEdit1.Perform(EM_SCROLLCARET,0,0);
  RichEdit1.SetFocus;
end;
Ответить с цитированием
  #3  
Старый 01.12.2010, 15:56
windrunner windrunner вне форума
Прохожий
 
Регистрация: 30.11.2010
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от ЖабаДушитКота
Код:
var
  mytext: string;
begin
  mytext:=copy(RichEdit1.Text, k+1 ,Length(RichEdit1.Text)-k);
  If pos(Edit1.Text, mytext)<>0 then
    k:=k+pos(Edit1.text, Mytext)
  else
    k:=Pos(Edit1.Text, RichEdit1.Text);
  RichEdit1.SelStart:=k-1;
  RichEdit1.Perform(EM_SCROLLCARET,0,0);
  RichEdit1.SetFocus;
end;

Точно. Спасиб! От вырезанного текста у меня позиция искалась. А у тебя от суммы. Ты прирожденный математик
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:17.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025