Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

HELP   Найти похожие ветки 

 
Шофер   (2007-03-01 08:29) [0]

Доброго времени суток!
У меня вопрос для поиска текста в Richedit я использую вот этот код.

procedure TMainForm.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
with RichEdit1 do
begin
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;
ToEnd := Length(Text) - StartPos;
FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
end
else
showmessage("Не найдено!");
end;
end;

В принципе он вроде ищет нормально но проблема в том что, если текст большой и для того что бы его прочитать нужно его прокручивать вниз, то алгоритм поиска тоько выделяет найденный текст, но переходит к нему. То есть у меня есть текст на 20 страниц и он нашел его то он к нему не перейдет а мне приходиться самому прокручивать текст что бы найте выделеннгое слово. Скажите как можно это исправить?


 
Elen ©   (2007-03-01 09:03) [1]


> Шофер   (01.03.07 08:29)

осмелюсь предложить альтернативу :

procedure TForm1.Button1Click(Sender: TObject);
var
FoundAt: Integer;
StartPos, ToEnd: Integer;
begin
with RichEdit1 do
begin
FoundAt:=0;
while FoundAt<Lines.Count do begin
 if Pos("111",Lines[foundat])>0 then exit;
 inc(FoundAt);
 RichEdit1.Perform(EM_LINESCROLL,0,1);
end;
end;
end;


Найденная строка будет первой сверху - остается только клацнуть вна нее мышкой. Если не найдет то станет в конец.


 
Шофер   (2007-03-01 09:45) [2]

Ваш код не рабочий, он ничего не ищет


 
Elen ©   (2007-03-01 10:00) [3]


> Ваш код не рабочий, он ничего не ищет

Ишет. У меня ишет и если находит то переходит к той строке где нашел. А как ты его используеш я не знаю. - это чисто пример принципа.


 
Рафик с рынка   (2007-03-01 12:52) [4]

Да извеняюсь всё работает, но проблемв в том что он не выделяет найденное слово я пытался это исправить , но мои попытки не к чему не привели


 
Шофер   (2007-03-01 12:52) [5]

Да извеняюсь всё работает, но проблемв в том что он не выделяет найденное слово я пытался это исправить , но мои попытки не к чему не привели


 
Elen ©   (2007-03-01 13:13) [6]


> Шофер   (01.03.07 12:52) [5]

Так привожу исправленный код :

procedure TForm1.Button1Click(Sender: TObject);
var
k,nc,FoundAt: Integer;
StartPos, ToEnd: Integer;    s:string;
label qwe;
begin
with RichEdit1 do
begin
FoundAt:=0;nc:=0;
while FoundAt<Lines.Count do begin s:=Lines[foundat];
 if Pos("в",Lines[foundat])>0 then begin   goto qwe;  end;

 inc(nc,length(Lines[foundat])); inc(nc,2);
 inc(FoundAt);
 RichEdit1.Perform(EM_LINESCROLL,0,1);
end;
qwe:
SelStart:=nc;SelLength:=length(Lines[foundat]); SetFocus;
end;


 
begin...end ©   (2007-03-01 13:22) [7]

> Шофер   (01.03.07 08:29)

После выделения нужного текста добавьте вызов SendMessage(RichEdit.Handle, EM_SCROLLCARET, 0, 0).



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
15-1172572853
Tema
2007-02-27 13:40
2007.03.25
Обработка нескольких XML


2-1172684265
Zloy
2007-02-28 20:37
2007.03.25
Настройка руссификации в базе данных


1-1170534006
Express
2007-02-03 23:20
2007.03.25
Как перехватить сообщение об открытие MDI-формы??


2-1172806023
zap8
2007-03-02 06:27
2007.03.25
Обмен данными между динамическим и статическим массивами


2-1172674149
ds120hp
2007-02-28 17:49
2007.03.25
Связь форм





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