Организация функции ПОИСК в Tmemo
Для начала посмотрим, в каком направлении нужно искать и соответственно выберем текст в котором надо искать: S:=FindDialog.FindText; // переменной s присваивается строка, которую нужно найти Теперь напишем код собственно поиска: Представленный ниже код я использовал при написании текстового редактора. Всё вроде работает. Если строка найдена, то она выделяется, если нет, то выдаётся соответстующее… Читать ещё >
Организация функции ПОИСК в 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;
Если строка найдена, то она выделяется, если нет, то выдаётся соответстующее сообщение.
Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Список литературы
Для подготовки данной работы были использованы материалы с сайта internet.