Файл: Методические указания к лабораторным работам по Delphi Lazarus.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 144

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  • Напишите единственную строчку, которая осуществляет вызов диалогового окна «О программе»:

procedure TForm1.Button4Click(Sender: Tobject);

begin

AboutBox.ShowModal;

end;

Здесь мы обращаемся к функции ShowModal, определенной для класса TForm, которая приводит к отображению соответствующей формы в модальном режиме (модальный режим обозначает, что пока окно не будет закрыто, переключиться на любое другое окно приложения будет невозможно). Переменная AboutBox из модуля Unit2 доступна в модуле Unit1, потому что ранее мы добавили в него строчку “uses Unit2”.

  • Запустите программу на выполнение и убедитесь, что обработчик кнопки «О программе» работает правильно.

Давайте разберемся, почему диалоговое окно «О программе» закрывается при нажатии кнопки OK, – ведь мы не писали никакого обработчика для этой кнопки! Переключитесь на форму AboutBox, выберите кнопку OK и найдите у нее свойство ModalResult. Вы увидите, что оно установлено в значение mrOk, а не mrNone (значение по умолчанию). Дело в том, что если окно у нас модальное (открывается функцией ShowModal) и у кнопки установлено значение, отличное от mrNone, то при нажатии на эту кнопку окно закрывается автоматически. Более того, функция ShowModal возвращает значение свойства ModalResult той кнопки, при нажатию на которую было закрыто окно, и это значение можно проверить в программе.

Последние штрихи



Несмотря на то, что при выполнении приложения заголовок главного окна изменяется, заголовок, который отображается внизу, на панели задач, остается неизменным (он совпадает с именем нашего проекта – FirstApp). Это нехорошо, так как принято, чтобы заголовки у главного окна и на панели задач совпадали (чтобы проще было найти свернутое приложение).


  1. Изменим заголовок в панели задач, отображаемый при старте программы:

  • Выберите из меню команду Project | Options, перейдите на вкладку Application и введите в поле Title строку «Человек» (название нашей программы).

  1. Сделаем так, чтобы заголовок в панели задач изменялся, когда меняется заголовок главного окна программы. Для этого нужно присвоить свойству Application.Title нужное значение в процессе выполнения программы:

  • Найдите в исходном тексте программы обработчик события Button3Click.

  • Допишите еще одну строчку кода, которая будет изменять заголовок программы в панели задач:

procedure TForm1.Button3Click(Sender: Tobject);

begin

Caption := Edit1.Text + ' ' + Edit2.Text + ' ' + Edit3.Text;

Application.Title := Caption;

end;



Лабораторная работа № 1 – программа "Сотрудники"



Образец: task1.exe
Программа должна реализовывать следующие функции:

  1. Заполнение ФИО нового сотрудника. Имя формируется как случайная комбинация из заранее предопределенных списков фамилий, имен и отчеств.

  2. Добавление нового сотрудника в список сотрудников и присвоение ему очередного номера.

  3. Очистка списка сотрудников.

  4. Сохранение списка сотрудников в файле.

  5. Загрузка списка сотрудников из файла.

  6. Отображение диалогового окна «О программе».

  7. Завершение работы с программой.



Требования к лабораторной работе № 1:





  1. Программа должна иметь главное меню, состоящее из трех пунктов: «Файл» (с командами «Очистить», «Открыть», «Сохранить», «Выход»), «Сотрудник» (с командами «Заполнить», «В Memo») и «Справка» (с командой «О программе»).

  2. Программа содержит 4 кнопки («Очистить», «Заполнить», «В Memo», «Выход»), которые являются синонимами соответствующих команд меню.

  3. Команды главного меню должны содержать «горячие» (подчеркнутые) буквы и комбинации клавиш быстрого вызова (shortcuts).

  4. Состояние программы (и ее заголовок) после выполнение команды «Очистить» должно быть точно таким же, как и после первого запуска программы.

  5. Заголовок «Список сотрудников» в Мемо должен присутствовать всегда, в том числе после выполнения команды «Очистить».

  6. Сотрудники в списке должны быть пронумерованы. После очистки списка счет снова должен начаться с единицы.

  7. ФИО нового сотрудника должно формироваться в результате случайной комбинации заранее предопределенного набора фамилий, имен и отчеств (минимум по 5 различных значений).

  8. При открытии/сохранении списка сотрудников в файле в заголовке к имени программы через дефис должно добавляться имя файла (например, «Сотрудники - 123.txt»). Этот же заголовок должен дублироваться внизу, в панели задач.

  9. В диалоговых окнах открытия/сохранения списка сотрудников в файле должны присутствовать фильтры типов файлов (как минимум два значения: «Текстовые файлы (*.txt)», «Все файлы (*.*)»).

  10. В диалоговом окне сохранения списка сотрудников в файле при задании только имени файла должно добавляться расширение по умолчанию TXT.

  11. При попытке открытия несуществующего файла должно выдаваться сообщение об ошибке.




Методические указания к лабораторной работе № 1:





  1. Создание главного меню программы.

  • Для создания главного меню поместите на форму компонент MainMenu, двойным щелчком по нему вызовите визуальный редактор меню и добавляйте пункты (заполняйте свойство Caption).

  • Чтобы сделать какую-ту букву в слове «горячей» (подчеркнутой), поставьте перед ней знак “&”, например «&Открыть».

  • Чтобы добавить в меню разделительную линию, добавьте пункт «-» (дефис).

  • Общепринятыми горячими клавишами (shortcuts) для команд «Открыть», «Сохранить» являются Ctrl-O, Ctrl-S.

  1. Создание массива фамилий, имен и отчеств. Объявление массива в языке Pascal имеет следующий вид:

variable: array [low..high] of type
где variableимя переменной массива,

low, high нижняя и верхняя граница массива,

type – тип, которому принадлежат элементы массива.
Например:

var

Numbers: array [0..100] of Integer;

Strings: array [1..10] of String;
Значения массива можно при объявлении инициализировать списком значений:

var

Marks: array [1..5] of Integer = (1, 2, 3, 4, 5);

Pets: array [1..4] of String = (‘кошка’, ‘собака’, ‘мышь’, ‘попугай’);


  1. Для получения случайного значения используйте функцию Random. Функция Random (N) возвращает случайное число в диапазоне от 0 до N-1 включительно. Используйте процедуру Randomize, чтобы при каждом запуске программы последовательность случайных чисел была бы новой.

  2. Работа с компонентом Memo.

  • Для присвоения Memo начального значения вызовите редактор Memo (найдите в Инспекторе объектов свойство Lines и нажмите […]).

  • Для добавления новых строк в конец Memo в процессе выполения программы используйте процедуру Memo.Lines.Add (Str: string).

  • Для очистки Memo используйте процедуру Memo.Clear или Memo.Lines.Clear.

  • Для получения количества строк в Memo используйте свойство Memo.Lines.Count.

  • Чтобы длинные строки в Memo не переносились на новую строку, установите свойство Memo.WordWrap := False.

  • Для сохранения содержимого Memo в файле используйте процедуру Memo.Lines.SaveToFile (FileName: string).

  • Для загрузки содержимого Memo из файла используйте процедуру Memo.Lines.LoadFromFile (FileName: string).

  1. Работа с файлами:

  • Для проверки существования файла используйте функцию FileExists (FileName: string), которая возвращает True, если указанный FileName существует, и False в противном случае.

  • Для получения из полного имени файла короткого (например, для отображения в заголовке программы) используйте функцию ExtractFileName (FileName: string).


  1. Использование стандартных диалогов «Открыть файл», «Сохранить файл».

  • Для добавления к программе стандартных диалогов, поместите на форму компоненты OpenDialog, SaveDialog, размещенных на закладке Dialogs.

  • Чтобы правильно настроить поведение диалогового окна, используйте свойство Options, представляющее собой длинный список возможностей диалогового окна, которые могут быть включены или выключены. Наиболее полезные из них следующие: ofOverwritePrompt – запрашивать подтверждение при перезаписи файла; ofFileMustExist – файл должен существовать; ofPathMustExist – путь должен существовать; ofAllowMultiSelect – позволить одновременно выделять несколько объектов и др.

  • Чтобы при сохранении файла к его имени добавлялось определенное расширение по умолчанию (например, “txt”), впишите нужное расширение в свойство DefaultExt.

  • Чтобы настроить в диалоговых окнах выпадающий список «Тип файлов», заполните свойство Filter при помощи встроенного редактора. В левом столбце необходимо ввести название фильтра (например, «Текстовые файлы (*.txt)»), а в правом – указать соответствующую маску для отбора файлов (в данном случае «*.txt»). Свойство FilterIndex позволяет выбрать, какой фильтр из списка будет активным при открытии диалогового окна.

  • Для вызова нужного диалогового окна в процессе выполнения программы используйте функцию Dialog.Execute, которая возращает True, если пользователь выбрал имя файла и нажал кнопку «Открыть» (в этом случае имя файла заносится в поле Dialog.FileName), и False, если пользователь нажал кнопку «Отмена». Обязательно проверяйте значение, которое возвращает функция!

  1. Использование одной процедуры-обработчика для нескольких событий. Если один и тот же набор действий в программе пользователь может выполнить разными способами (например, нажав кнопку или выбрав команду из меню), то рекомендуется создать процедуру-обработчик только в единственном экземпляре (чтобы избежать дублирования кода и упростить редактирование при внесении последующих изменений). Предположим, нам необходимо создать один общий обработчик для команды меню «Очистить» и кнопки «Очистить»:

  • Чтобы создать обработчик для команды меню «Очистить», щелкните по соответствующему пункту меню на форме (не в редакторе меню). Запомните имя соответствующей процедуры-обработчика (например, N2Click).

  • Чтобы связать обработку нажатия кнопки «Очистить» с ранее созданным обработчиком, выберите на форме кнопку «Очистить», в Инспекторе объектов перейдите на вкладку Events (События), найдите событие OnClick и выберите из выпадающего списка обработчик N2Click.