Напишите процедуру заполнения полей редактирования NewEdit.

Вызов этой процедуры осуществляется, в частности, в момент выбора фамилии для поиска, то есть в момент смены активной строки в комбинированном списке. Поэтому для инициализации заготовки этой процедуры активизируйте на закладке Events окна Object Inspector объекта ComboBox1 строку OnChange (МоментЗамены) и в правом столбце укажите название процедуры реакции на это событие: NewEdit. Дважды щелкните мышью, указав на введенное название и заполните заготовку этой процедуры следующим образом:

procedure TPagesDlg.NewEdit(Sender: Tobject);

var i : integer;

begin

{i - номер строки данных в таблице}

i :=ComboBoxl.ItemIndex+ 1;

if i>0 then begin

{Для значащих позиций комбинированного списка}

Editl.Text := StringGrid1.Cells[0, i]; {копируем данные 1-го записи с}

Edit2.Text := StringGrid1.Cells[l, i]; {первой страницы формы в}

Edit3.Text := StringGrid1.Cells[2, i]; {соответствующие поля на второй странице}

Edit4.Text := StringGrid1.Cells[3, i];

end; end;

Напишите процедуру заполнения комбинированного списка NewComboBox.

Сначала к описанию типа класса (объекта) TPagesDlg (многостраничной формы) в разделе interface добавьте декларацию:

type

{Эта запись уже есть в заготовке модуля}

TPagesDlg = class(TForm)

{Необходимо вставить}

procedure NewComboBox;

В раздел implementation добавьте описание этой процедуры:

Procedure TPagesDlg.NewComboBox;

var i, j : integer;

begin {Запоминаем активную позицию комбинированного списка }

j :=ComboBox1.ItemIndex; {Очищаем комбинированный список}

ComboBox1.Clear;

for i:=1 to N do {Для всех N запись I..}

{В обновленный комбинированный список добавляем все фамилии из первого столбца таблицы}

ComboBox1.Items.Add(StringGrid1.Cells[0, i]);

{Переходим на позицию j}

ComboBox1.ItemIndex :=j; end;

23. Сохраните работу, запустите программу, заполните таблицу данными и убедитесь в том, что программа правильно записывает на диск и считывает с диска файлы телефонных справочников.

24. Запрограммируйте команду главного меню «Сохранить изменения в списке записей».

procedureTPagesDlg.N6Click(Sender: Tobject);

{Здесь N6 - номер команды «Записать в файл», у Вас может быть другой)

var i : integer;

Begin

{Определяем номер активной записи}

i :=ComboBox1.ItemIndex+1;

if PageControl1.ActivePage=TabSheet2 then

begin {Если активная вторая страницa}

StringGrid1.Cells[0, i] :=Editl.Text;

{то вносим изменения в первую }

StringGrid1.Cells[l, i] :=Edit2.Text;

StringGridl. Cells[2, i] := Edit3.Text;

StringGrid1.Cells[3, i] := Edit4.Text; end;

{Иначе - вносим изменения во вторую страницу}

elseNewEdit(ComboBox1);

{В обоих случаях обновляем комбинированный список}

NewComboBox; end;

25. Запрограммируйте кнопку перехода на предыдущую запись «Предыдущий».

procedureTpagesDlg.ButtonlClick(Sender; Tobject);

Begin

if ComboBox1.Itemindex = 0 then{Зацикливаем список}

ComboBox1.Itemindex :=N-1 else

{В середине списка показатель уменьшается на единицу}

ComboBox1.Itemindex := ComboBox1.Itemindex -1; {Обновляем панель «Найдена запись»}

NewEdit(ComboBox1); end;

26. Аналогично запрограммируйте кнопку «Следующий».

Программный кодсозданной процедуры запишите в отчет.

27.Сохраните программу и убедитесь в правильности ее работы.

Запустите программу, считайте с диска файл телефонного справочника, выберите какую-то фамилию в комбинированном списке и поменяйте ее в поле редактирования «Фамилия». Убедитесь в том, что синхронные изменения происходят и в комбинированном списке. Сохраните изменения и используйте кнопки «Предыдущий» и «Следующий» для навигации по записям, убедитесь в зацикливании списка. Удалите одну запись кнопкой «Стереть», сохраните изменения и перейдите на первую страницу. Отредактируйте данные в таблице, сохраните справочник в файле на диске, просмотрите окно «О программе», закончите работу с программой.

Задания:

1.Запрограммируйте кнопку«Удалить» так, чтобы после нажатия на нее удалялись данные из панели «Найдена запись» и из комбинированного списка.

2.Запрограммируйте кнопку«Найти» так, чтобы на панели «Найдена запись» отображалась информация о лице, фамилия которого указана в поле редактирования Edit5 «Введите фамилию». Если такой фамилии нет, то выведите сообщения об этом в отдельном окне.

3.Запрограммируйте команды подменю «АЯ» и «ЯА» пункта главного меню «Сортировать» так, чтобы фамилии в таблице и комбинированном списке были отсортированы в алфавитном или обратном порядке.

4.Удалите команду «Сохранить изменения в списке записей» из главного меню и обеспечьтесохранение изменений в момент редактирования таблицы и полей на панели «Найдена запись».

5. В случае попытки открыть несуществующий файл телефонного справочника обеспечьте появление окнас соответствующим сообщением.

6.В момент выхода из программы обеспечьте появление окна для сохранения файла телефонного справочника в случае, если в нем были сделаны изменения.

Рис.6 Рис.7

Рис. 8