Доклад

Доклад на тему Организация функции ПОИСК в Tmemo

Работа добавлена на сайт bukvasha.net: 2015-06-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.2.2025


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

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

Итак, на форме должны быть 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;

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

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


1. Сочинение на тему Литературные споры начала XIX века
2. Контрольная работа на тему Изучение норм расхода сырья
3. Реферат Товарная биржа как элемент рыночного механизма
4. Сочинение на тему Значение второстепенных персонажей в драме А Островского Гроза
5. Реферат Мультимедийная игра - викторина Символы России
6. Реферат на тему Сутність токсикоманії
7. Реферат Cодовые озера - природная модель древней биосферы континента
8. Реферат Недобросовестная конкуренция 3
9. Реферат на тему Заболевания предупреждаемые вакцинацией
10. Реферат на тему Lee De Forest Essay Research Paper Lee