Вызов этой процедуры осуществляется, в частности, в момент выбора фамилии для поиска, то есть в момент смены активной строки в комбинированном списке. Поэтому для инициализации заготовки этой процедуры активизируйте на закладке 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;
{Иначе - вносим изменения во вторую страницу}
else NewEdit(ComboBox1);
{В обоих случаях обновляем комбинированный список}
NewComboBox; end;
25. Запрограммируйте кнопку перехода на предыдущую запись «Предыдущий».
procedure TpagesDlg.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