Материал: Методические указания к лабораторным работам № 11-12 по дисциплине «Информатика» для студентов направления подготовки 11.03.03. Ромащенко М.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

выбору. Естественно, Delphi предоставляет такую возможность. Рассмотрим компоненты, позволяющие в работающей программе осуществлять выбор файлов, а именно диалоги выбора файла, позволяющие указать программе с каким файлом мы хотим работать.

На вкладке палитры компонентов Dialogs находятся компоненты OpenDialog и SaveDialog (рис. 5). Все Delphi диалоги, находящиеся на этой вкладке, в том числе и Delphi диалоги выбора файла, невизуальные, т.е. при переносе их на Форму в работающей программе их не видно, они видны только на этапе конструирования. Компонент OpenDialog позволяет открыть в нашей программе стандартное Windows-окно диалога открытия файла, компонент SaveDialog – окно диалога сохранения.

Рис. 5 – Компоненты вкладки Dialogs

Диалоги выбора файла сами по себе ничего не делают, а только предоставляют настройки, сделанные пользователем при выборе файла. Самый важный метод диалогов – Execute. Он срабатывает в момент нажатия кнопки "открыть" или "сохранить" в окне выбора файла. Для примера введём в

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

Создадим новый проект и перенесем на Форму оба диалога работы с файлами, текстовый редактор Memo, и три кнопки Button. В свойство Caption одной из них записываем "Открыть...", другой – "Сохранить", третьей – "Сохранить как...". В итоге должна получиться Форма представленная на рис. 6.

В обработчике OnClick кнопки "Открыть..." пишем:

if OpenDialog1.Execute then Memo1.Lines.LoadFromFile('OpenDialog1.FileName');

В результате выбора файла свойство FileName компонента OpenDialog получает значение полного адреса выбранного файла, который мы и вставляем в функцию загрузки файла компонента Memo.

9

Рис. 6 – Пример формы для демонстрации компонентов OpenDialog и

SaveDialog

Данный обработчик работает только тогда, когда сохраняемое выражение записывается в одну строку. Если программа использует несколько раз выражение OpenDialog1.FileName, то в Delphi для такого случая есть так называемый "оператор присоединения" with. Он используется для любых объектов, имеющих длинный "хвост" из свойств, которые приходится записывать многократно. Вот как он записывается:

with Объект do begin

end;

Свойства объекта внутри логических скобок begin/end можно записывать непосредственно. Естественно, в случае, когда внутри скобок находится один оператор, они необязательны. Перепишем фрагмент загрузки файла с использованием оператора присоединения:

with OpenDialog1 do if Execute then

Memo1.Lines.LoadFromFile('FileName');

Запись получается более компактной.

Так как свойства компонентов OpenDialog и SaveDialog одинаковы,

10

сохранение текста выглядит абсолютно аналогично. Создаём обработчик нажатия кнопки "Сохранить как..." и пишем:

with SaveDialog1 do if Execute then begin

Memo1.Lines.SaveToFile('FileName'); OpenDialog1.FileName:=FileName; // Чтобы исправленный текст не затёр источник

end;

А для кнопки "Сохранить" пишем:

Memo1.Lines.SaveToFile('OpenDialog1.FileName'); // Сохраняем туда,

откуда считали

При работе этих фрагментов пользователю приходится выбирать нужный файл из всех файлов в директории. Удобнее видеть только, например, текстовые файлы, или другой тип файлов по выбору пользователя. Для этого используются фильтры, свойство Filter в наших компонентах. Настраивается оно в Инспекторе Объектов. При выборе его можно перейти в редактор фильтров, представленный на рис. 7.

В колонке FilterName записываем имена фильтров, в колонке Filter – список масок файлов, разделённых точкой с запятой. Маска файла в данном случае выглядит так *.расширение_файла . Звёздочка означает, что выбираются файлы с любыми именами, подходящие по расширению.

Рис. 7 – Окно фильтров файлов по расширению

Свойство диалогов Title позволяет записать в заголовок нужную фразу, 11

которую увидит пользователь при работе с диалогом. Если оставить его пустым, то в заголовке будут стандартные "открыть" или "сохранить"

Свойство InitialDir позволяет в момент открытия переместить пользователя в нужную директорию. Оно доступно как на этапе конструирования Формы, так и программно.

2.2. Лабораторные задания

Задание 1 – Разработать приложение, которое по нажатию кнопки будет обрабатывать двухмерный массив и выводить результат. Предусмотреть возможность ввода данных самостоятельно пользователем, при помощи генератора случайных чисел или чтением из файла. Результат расчета должен по указанию пользователя выводится на экране или записываться в файл (отдельно или одновременно).

Один из вариантов интерфейса приложения представлен на рис. 8.

Рис. 8 – Вариант интерфейса приложения

Для этого на форме разместите два компонента класса TLabel, два компонента класса TEdit и кнопку TBitBtn. Они будут использоваться для

12

ввода элементов массива с клавиатуры и вывода результатов на экран. Среда Delphi по умолчанию присвоила этим компонентам имена Label1, Label2, Edit1 и т. д. Так как в программе может использоваться большое количество одинаковых компонентов, а наличие у них однотипных имен затруднит понимание и написание программы, рекомендуется изменять названия на более информативные, например, edMassIn и edResult. Имена в Delphi должны состоять из латинских букв, цифр и знака подчеркивания, причем имя не должно начинаться цифрой и содержать пробелов.

Измените свойства Формы следующим образом: в Инспекторе Объектов в Caption впишите Лабораторная работа №11, и установите следующие параметры BorderStyle - bsSingle, в BorderIcons: biSystemMenu = True, biMinimize = True, biMaximize = False, biHelp = False. В результате этого разрабатываемая форма будет иметь заголовок Лабораторная работа №11, ее размеры неизменяемы, ее можно закрыть нажав, на крестик в верхнем правом углу, и минимизировать.

С помощью TLabel создадим заголовки для полей ввода. Разместив их соответствующим образом, перейдите в Инспектор Объектов, и в их свойствах Caption напишите, например, следующее: Исходный массив и Результат. Для изменения шрифта в Инспекторе Объектов два раза щелкните на свойстве Font, установите высоту шрифта 10 и стиль fsBold.

Присвойте полям ввода имена edMassIn и edResult. и удалите текст, содержащийся в свойстве Text. Редактор edResult будет использоваться только для вывода результатов, поэтому можно запретить изменение в нем текста, для этого установите свойство ReadOnly в True.

Кнопка TBitBtn используется для выхода из программы, присвойте ей имя BtBnClose. В Caption запишите текст, который будет отображаться на кнопке, например, Закрыть. Для того чтобы при нажатии кнопки завершалась работа программы необходимо сделать следующее: в Инспекторе Объектов перейдите на закладку Events и выберите пункт OnClick. В автоматически созданном обработчике впишите Close. Таким образом, при нажатии кнопки возникает событие OnClick, оно обрабатывается написанной процедурой, метод формы Close закрывает окно и завершает работу программы.

procedure TForm1.BtBnCloseClick (Sender: TObject); begin

Close;

end;

Ввод массива будем осуществляться в поле ввода edMassIn, элементы массива отделять пробелами, а строки символом ; . Количество элементов в строках определяется количеством элементов в первой строке, а количество

13

Источник: https://studfile.net/preview/16565078/