Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatica / lab_delphi / Упражнение 3 по Delphi.doc
Скачиваний:
14
Добавлен:
09.04.2015
Размер:
676.35 Кб
Скачать

Программирование

  1. Создайте обработчик события создания формы, который будет задавать свойству TextУЭ-таMemo1какое-либо значение (например, ‘Редактируемый текст’) с помощью оператораMemo1.Text:=’Редактируемый текст’;.

  2. Создайте для пункта строки меню Выходобработчик события, завершающий работу программы, для чего в окне формы сделайте на нем щелчок и в теле появившегося обработчика разместите операторClose;. Назначьте эту же подпрограмму обработчиком события пункта менюФайл\Выход, для чего в окнеObject TreeViewщелкните на строчке с его именем, в окнеObject Inspectorдля событияOnClickвыберите обработчикN10Click.

  3. Создайте обработчик события пункта меню Файл\Сохранить, сохраняющий в рабочем каталоге в файле ‘Задание 3.txt’ весь текст УЭ-таMemo1, для чего в окне Object TreeViewщелкните на строчке с его именем, в окнеObject Inspectorдля событияOnClickсоздайте шаблон обработчика и в его теле введите операторMemo1.Lines.SaveToFile('Задание 3.txt');.

  4. Аналогично создайте обработчик события пункта меню Файл\Открыть, загружающий из файла ‘Задание 3.txt’ в рабочем каталоге весь текст в УЭ-тMemo1с помощью оператораMemo1.Lines.LoadFromFile('Задание 3.txt');.

  5. Аналогично создайте обработчик события пункта меню Файл\Создать, уничтожающий весь текст в УЭ-теMemo1с помощью оператораMemo1.Text:='';.

  6. Создайте обработчик события пункта меню Поиск|Замена\Найти, для чего в форме раскройте подменю пунктаПоиск|Замена, щелкните на подпункте Найтии в теле появившегося обработчика введите операторFindDialog1.Execute;открывающий диалогНайти. Затем щелчком на значкеFindDialog1на форме отобразите свойства этого УЭ-та, сделайте обработчик событияOnFindдля последовательного поиска и выделения всех вхождений искомой строки, задаваемой в поле вводаЧто:окна диалогаНайти, в текст ЭУ-таMemo1, например, такой:

procedure TForm1.FindDialog1Find(Sender: TObject);

var i, lFindText:integer; ch:char;

begin

lFindText:=Length(FindDialog1.FindText);

ch:= FindDialog1.FindText[1];

i:=Memo1.SelStart+1;

if K then inc(i);

while i < Length(Memo1.Text)- lFindText +2 do begin

if Memo1.Text[i]=ch then

if Copy(Memo1.Text,i, lFindText)= FindDialog1.FindText then begin

Memo1.HideSelection:=False;

Memo1.SelStart:=i-1;

Memo1.SelLength:= lFindText;

K:=True;

exit;

end;

inc(i);

end{while};

MessageDlg('Текст не найден!',mtInformation,[mbOK],0);

end;

где К– глобальная булевская переменная, получающая значениеTrueвсякий раз, как найдено очередное вхождение искомой строки в текст УЭ-таMemo1. Она должна устанавливаться вFalseв обработчиках событий открытия файла и открытия из меню окнаНайти, а также при щелчке на УЭ-теMemo1, соответствующий обработчик которого следует создать.

  1. Создайте обработчик события пункта меню Поиск|Замена\Заменить, для чего в форме раскройте подменю пунктаПоиск|Замена, щелкните на подпункте Заменитьи в теле появившегося обработчика введите операторReplaceDialog1.Execute;открывающий диалогЗамена. Затем щелчком на значкеReplaceDialog1 на форме отобразите свойства этого УЭ-та и выберите для событияOnFind обработчикFindDialog1Find (это допустимо и работает) для последовательного поиска и выделения всех вхождений искомой строки, задаваемой в поле вводаЧто:окна диалогаЗамена, в текст ЭУ-таMemo1. Создайте также обработчик событияOnReplace, вызываемый щелчком на кнопкеЗаменитьокна диалогаЗамена, например, такой:

procedure TForm1.ReplaceDialog1Replace(Sender: TObject); var i:integer;

begin Memo1.SelText:=ReplaceDialog1.ReplaceText; Memo1.HideSelection:=False; Memo1.SelStart:=i-1; Memo1.SelLength:= Length(ReplaceDialog1. ReplaceText);end; который будет заменять выделенный вMemo1текст на текст, введенный пользователем в полеЧем:в окне диалогаЗамена, который также будет выделен вMemo1.

  1. Создайте обработчик события пункта меню Поиск|Замена\Заменить все, для чего в окнеObject TreeViewщелкните на строчке с таким именем, в окнеObject Inspectorдля событияOnClickвыберите обработчикN8Click, открывающий окно диалогаЗамена. Для поиска и замены всех вхождений искомой строки, задаваемой в поле вводаЧто:окна диалогаЗамена, в текст ЭУ-таMemo1, на текст, введенный пользователем в полеЧем:этого окна, измените обработчик событияOnReplaceокнаЗамена (это одно и то же событие для окнаЗамена, возникающее как при нажатии кнопкиЗаменить, так и при нажатии кнопкиЗаменить всё), например, так:

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);

var i,lFindText,lReplaceText:integer; ch:char;

begin

if frReplace in ReplaceDialog1.Options then begin

i:=Memo1.SelStart;

Memo1.SelText:=ReplaceDialog1.ReplaceText;

Memo1.HideSelection:=False;

Memo1.SelStart:=i-1;

Memo1.SelLength:= Length(ReplaceDialog1. ReplaceText)

end

else begin

lFindText:=Length(ReplaceDialog1.FindText);

lReplaceText:=Length(ReplaceDialog1.ReplaceText);

ch:= ReplaceDialog1.FindText[1];

i:=Memo1.SelStart+1;

if K then inc(i);

while i+lFindText-1 <= Length(Memo1.Text) do begin

if Memo1.Text[i]=ch then

if Copy(Memo1.Text,i, lFindText)= ReplaceDialog1.FindText then

begin

K:=True;

Memo1.SelStart:=i-1;

Memo1.SelLength:= lFindText;

Memo1.SelText:=ReplaceDialog1.ReplaceText;

Memo1.SelLength:= lReplaceText;

i:=i+lReplaceText-1;

end;

inc(i);

end{while};

end{else};

end;

Здесь старые операторы обработчика будут выполняться только при нажатии кнопки ЗаменитьокнаЗамена, так как при ее нажатии во множествоReplaceDialog1.Options(которое является свойством УЭ-таReplaceDialog1, представляющего окноЗамена) будет включено значениеfrReplaceи удалено значениеfrReplaceAll(при нажатии кнопки Заменить всепроизойдет обратное).

Соседние файлы в папке lab_delphi