Напишите процедуру заполнения полей редактирования 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