РефератыИнформатика, программированиеОрОрганизация функции ПОИСК в Tmemo

Организация функции ПОИСК в Tmemo

Организация функции ПОИСК в TMemo


Предводителев Сергей


Представленный ниже код я использовал при написании текстового редактора. Всё вроде работает.


Итак, на форме должны быть TMemo (Editor), TFindDialog (FindDialog) и TButton (Button).


Сначала напишем обработчик нажатия на кнопку:


procedure TForm1.ButtonClick(Sender: TObject);


begin


FindDialog.Execute; // ОткрытиедиалогаПоиск


end;


В свойствах дилога должны быть True опции frHideWholeWord (Скрыть в диалоге выбор флажка "Только слово целиком"), frHideMatchCase (Скрыть в диалоге выбор флажка "С учётом регистра") и frDown (по-умолчанию направление поиска вниз), все остальные опции должны быть False.


В Editor свойство HideSelection должно быть False.


Теперь напишем обраобтчик на нажатие кнопки Найти далее в диалоге Поиск.


Должны быть описаны следующие переменные и метки:


var


SelPos,X,i:integer;


s,textE:string;


label 1;


Для начала посмотрим, в каком направлении нужно искать и соответственно выберем текст в котором надо искать:


if frDown in FindDialog.Options


then Editor.SelStart:=Editor.SelStart+Editor.SelLength; // этодля "поискдалее"


textE:=Editor.Text;


X:=Editor.SelStart+

1;


if frDown in FindDialog.Options


then


textE:=Copy(textE,X,Length(textE)-X+1)


else


textE:=Copy(textE,0,X-1);


s:=FindDialog.FindText; // переменной s присваивается строка, которую нужно найти


Теперь напишем код собственно поиска:


if frDown in FindDialog.Options


then


{ код поиска вниз }


begin


SelPos := Pos(s,textE);


if SelPos > 0


then


begin


Editor.SelStart := SelPos + X - 2;


Editor.SelLength:=length(s);


end


else ShowMessage(pchar('Текст "'+ FindDialog.FindText+'" ненайден.'));


end


else


{ код поиска вверх }


begin


for i:=length(textE)-length(s) downto 1 do


if copy(textE,i,length(s))=s


then


begin


Editor.SelStart := i-1;


Editor.SelLength:=Length(s);


goto 1;


end;


ShowMessage(pchar('Текст "'+ FindDialog.FindText+'" ненайден.'));


1:


end;


Если строка найдена, то она выделяется, если нет, то выдаётся соответстующее сообщение.


Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Организация функции ПОИСК в Tmemo

Слов:272
Символов:3026
Размер:5.91 Кб.