Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Студентам04ЗД к Упр4 Сем 2 на ЗАПИСИ ТИПИЗИР.Ф...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
338 Кб
Скачать
☆
  1. Создание обработчиков событий.

    1. Добавьте в метод procedure TForm1.FormCreate(Sender: TObject) обработки события FormCreate операторы и комментарии, как на рис.2.

Из этого обработчика вызывается процедура TabForFile, составленная для программной установки параметров основной таблицы, в которий будут создаваться исходные, предназначенные для обработки данные (одной строке таблицы соответствует одна запись типа tz), сохраняться в типизированном файле типа tfz, загружаться из файла и редактироваться. Это – количества строк (в дальнейшем не может изменяться), количество столбцов, ширина каждого столбца, тексты заголовков стобцов, ширина окна для отображения таблицы (см. рис. 3).

В процессе выполнения заданий может возникнуть необходимость изменить параметры таблицы для отображения результатов выполняемых работ и тогда, чтобы восстановить параметры основной таблицы достаточно будет вызвать процедуру TabForFile. Если при переходе от одной структуры таблицы к другой некоторые параметры остаются неизменными и представлены соответствующими свойствами в Инспекторе объектов, то их установку можно выполнить на этапе разработки макета формы. В данном примере так сделано для установки полос прокрутки заданием свойству ScrollBars значения ssBoth (см. рис. 4) и фиксации (объявление как заголовочной) первой строки таблицы заданием свойству FixedRows значения 1, а свойству FixedCols значения 0, так как фиксированных столбцов не должно быть (см. рис 1, где первая строка выделена цветом).

    1. Создайте обработчик procedure TForm1.N6Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить как…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, как на рис. 5. В этом обработчике опреатором вызывается процедура SaveToFileOfTz, предназначенная для сохранения содержимого основной таблицы в файле типа tfz. Её текст представлен на рисю 6.

Д ля проверки работы. Запустите программу, наберите в строках таблицы StringGrid1 строки как показано на рис.7 и сохраните данные в файле fz.rec в текущем каталоге. Затем откройте этот файл на новой вкладке с именем fz.rec окна редактора текстов Delphi следующим образом: введите команду Файл.Открыть…, в появившемся окне диалога Open выберите в раскрывающемся списке Тип файлов: строку Any file(*.*), в списке файлов выберите fz.rec и щелкните на кнопке Открыть. Данные из файла fz.rec будут прочитаны как из текстового файла, поэтому правильно отобразятся только строковые данные (названия групп и фамилии), но не числовые, так как в типизированных файлах данные хранятся в форме внуреннего представления.

    1. Создайте в начале раздела реализации процедуру LoadFromFileOfTz, загружающую в основную таблицу данные из файла со спецификацией S и устанавливающую признак, что данные в таблице после загрузки ещё не изменены (см. рис. 8).

    2. С

      procedure TabClear;

      var iStroki,iStolbca:integer;

      begin

      //очистка ячеек таблицы

      for iStolbca:=0 to Form1.StringGrid1.ColCount-1 do

      for iStroki:=1 to Form1.StringGrid1.RowCount-1 do

      Form1.StringGrid1.Cells[iStolbca,iStroki]:='';

      end;//procedure TabClear

      Рис. 10. процедура очистки основной таблицы

      оздайте обработчик procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String) события изменения данных в таблице, поместив в него всего один оператор TabModified:=true. Для создания шаблона этого обработчика щелкните на таблице в макете формы и в Инспекторе объектов на вкладке Events сделайте двойной щелчок в строке OnSetEditText.

    3. Создайте обработчик procedure TForm1.N3Click(Self) события щелчка на пункте меню Файл\Открыть…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии (см. текст обработчика рис. 9), имея в виду следующее.

      1. Если данные таблицы не были изменены (TabModified ложно), то сразу перейти к диалогу открытия файла (см. рис. 9), иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененными данными:

    • I) или сохранить их в файле по выбору, вызвав N6Click(Self) и затем открыть новый файл;

    • II) или не сохранять данные и открыть новый файл;

    • III) или отменить выполнение команды, выйдя из метода и продолжить редактирование данных, как если бы команда открытия файла вообще не вводилась.

      1. Возможно, структура таблицы была изменена, поэтому следует восстановить структуру осонвной таблицы, вызвав процедуру TabForFile и очистить её, вызвав процедуру TabClear (см. рис. 10).

      2. Диалог для выбора открываемого файла запускается командой OpenDialog1.Execute (см справку по классу TOpenDialog). Если открываемый файл не был выбран (в окне диалога Открыть была нажата кнопка Отмена) или пользователь ввёл имя несуществующего файла, то следует просто выйти из обработчика (вернуться к редактированию прежних данных), иначе следует загрузить выбранный файл на редактирование, переменной S присвоить спецификацию этого файла и отобразить её в заголовке окна форма, а также свойству TabModified присвоить значение false – признак того, что загруженные на редактирование данные пока не изменены.

    1. Создайте самостоятельно обработчик procedure TForm1.N7Click(Sender: TObject) события щелчка на пункте меню Файл.Выход, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее. Если редактируемые данные не были измены (TabModified ложно), то сразу завершите работу программы оператором close, иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененными данными:

    • I) или сохранить его в файле (пользователь нажал кнопку Yes) по выбору, вызвав N6Click(Self) , если S=’’, иначе – методом SaveToFileOfTz, и затем завершитm работу программы;

    • II) или не сохранять текст (пользователь нажал кнопку No) и завершить работу программы;

    • III) или отменить выполнение команды (пользователь нажал кнопку Cancel), выйдя из обработчика по exit, и продолжить редактирование данных, как если бы команда завершить работу программы вообще не вводилась.

    1. Создайте самостоятельно обработчик procedure TForm1.N2Click(Sender: TObject) события щелчка на пункте меню Файл.Создать, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду что:

    • нужно без всяких условий перейти к структуре основной таблицы вызовом TabForFile и очистить её,

    • строка S должна стать пустой, то есть не должна представлять имя файла,

    • установить в ложь признак TabModified, - в заголовке формы оставить только её название, то есть слово Form1.