Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
230401_MU_-_Osnovy_algoritmizatsii_i_programmir...docx
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

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

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

procedureTPagesDlg.NewEdit(Sender: Tobject); var i : integer; begin

{i - номер строки данных в таблице} i •:= ComboBox 1.Itemlndex + 1; ifi> 0 thenbegin

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

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

{копируем данные i-го записи с}

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

{первойстраницыформыв}

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

{соответствующие поля на второй странице}

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

end

end;

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

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

{Эта запись уже есть в заготовке модуля} TPagesDlg = class(TForm)

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

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

procedureTPagesDlg.NewComboBox; var i, j : integer; begin

{Запоминаемактивнуюпозициюкомбинированного} j := ComboBox 1.Itemlndex; {списка} {Очищаемкомбинированныйсписок} ComboBoxl .Clear;

fori := 1 to N do {Длявсех N записей...}

{В обновленный комбинированный список добавляем все фамилии из первого столбца таблицы} ComboBox 1.. .Items.Add(StringGridl.Cells[0, I]); {Переходим на позицию j} ComboBoxl.Itemlndex := j; end;

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

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

procedureTPagesDlg.N6Click(Sender: Tobject); {Здесь N6 - номер команды «Записать в файл», у Вас может быть другой}

vari : integer;

begin

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

i :'= ComboBoxl.Itemlndex + 1;

ifPageControll.ActivePage=TabSheet2 then

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

StringGridl.CellsfO, i ] := Editl.Text;

{то вносим изменения в первую }StringGridl.Cells[l, i] := Edit2.Text; StringGridl.Cells[2, i] := Edit3.Text; StringGridl.Cells[3, i] := Edit4.Text; end

{Иначе — вносим изменения во вторую страницу) elseNewEdit(ComboBoxl);

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

NewComboBox;

end;

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

procedureTpagesDlg.ButtonlClick(Sender: Tobject); begin

ifComboBoxl.Itemlndex = 0 then

{Зацикливаемсписок) ComboBoxl.Itemlndex := N-l

else

{В середине списка показатель уменьшается на единицу) ComboBoxl.Itemlndex := ComboBoxl.Itemlndex - 1;

{Обновляем панель «Найдена запись»)

NewEdit(ComboBox 1);

end;

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

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

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

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

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

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

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

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

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

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