У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

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

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

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

от 25%

Подписываем

договор

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

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

Организация функции ПОИСК в 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;

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

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

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://andrey.nnov.ru/




1. в синоптиков говорим о погоде описываем ее- Sunny Riny Snowy Windy Cloudy РЕСТОРАН За
2. Бесплодие при ЗПП
3. в Тольятти 20 января 2014 года в Тольятти состоится встреча авторитетных экспертов российского рынка инн
4.  общая информация о стране
5. Тема опыта Личностно ориентированный подход к обучению и воспитанию учащихся при проведении уроков физичес
6. Оценка эффективности рекламной кампании на примере компании ООО
7. ТЕМА 1 Предмет та сутність естетики Вступ Природа та ознака естетичного Структура естетичної свідом
8.  C Builderді~ ~~деу ортасы
9. Реферат- 7 вопросов по педагогике
10. і Оны~ ~ндерін е~бектеген баладан бастап е~кейген к~ріге дейін шыр~айды
11. Лирический образ Руси в прозе Н. В. Гоголя
12. ДАНГЫНА и ТАЖЫ АБАКАНА 2014 Общие положения 1
13. Вопрос 1. Древняя Русь в IX ' начале XII в
14. Билибин Иван Яковлевич
15. учебник по Теория государства и права Купит конституцию РФ I
16. Роль эффекта Розенталя Пигмалиона в управлении персоналом
17. Реферат- Кредитно-инвестиционное обеспечение коммерческими банками и страховыми организациями инновационных проектов
18. это вероятность потерь финансовых ресурсов
19. Религиозно-культурный конфликт в Риме Оргиастические формы культа Диониса - вакханалии
20. а с патрубком резиновой камеры эбонитового краника резиновых колец спермоприемника держателя спермоприе