Главная страница
Навигация по странице:

  • Практическая часть. Ход работы.

  • Тема: Многооконные приложения. Модальные и немодальные окна. Основные вопросы

  • Немодальная

  • Закрыть. Уничтожение

  • Информатика21-22. Методические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1


    Скачать 4.27 Mb.
    НазваниеМетодические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1
    Дата31.03.2022
    Размер4.27 Mb.
    Формат файлаdocx
    Имя файлаИнформатика21-22.docx
    ТипМетодические указания
    #431282
    страница9 из 12
    1   ...   4   5   6   7   8   9   10   11   12

    Лабораторная работа №8


    Тема: Диалоговые приложения. Основные вопросы:

    •Цель работы: Создание диалоговых приложений.

    Теоретическая часть.

    Диалоговые приложения предоставляют пользователям возможность что-то изменить, что-то задать, в соответствии с их предпочтениями. В большинстве своем, программы с графическим интерфейсом имеют главное окно, с полосой меню и панелью инструментов, и множество диалоговых окон, каждое из которых предназначено для обмена информацией с пользователем или вывода ее в определенном формате. Зачастую приложение может быть оформлено как одно диалоговое окно, которое напрямую взаимодействует с пользователем, получая от него команды и выполняя соответствующие им действия. Примером диалогового приложения может служить программа-калькулятор.

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

    Как правило, в диалоговых приложениях пользователь выбирает данные из списка, с помощью радиокнопок выбирает варианты того параметра, который используется в программе. Для выполнения разнообразных действий используются кнопки. Все эти стандартные элементы управления Windows-приложений можно скомпоновать в окне по-разному. От того, как это будет сделано на этапе проектирования интерфейса, зависит удобство работы пользователя в дальнейшем.

    Немаловажным в диалоговом приложении является логическая составляющая. Красиво и грамотно оформленный интерфейс, но неверная логика в приложении сведут на нет все усилия и потребуется немало времени, чтобы выявить ошибки в логике и исправить их.

    На нынешнем этапе развития программного обеспечения особым спросом пользуются тестовые программы для проверки знаний учащихся, студентов, слушателей различных курсов. Умение разрабатывать такие программы является частью подготовки студентов, профессия которых связана с информационными технологиями.

    Разработка диалоговой программы проводится в несколько этапов:

    1 этап. Подбор фактического материала.

    На этом этапе необходимо подобрать те вопросы, которые будут использованы в программе в процессе тестирования. Вопросы должны быть сформулированы чётко и ответ на них не должен быть двусмысленным. Кроме того, необходимо, чтобы у вопроса и варианта правильного ответа был официальный источник. Желательно, а иногда необходимо, указать в документации к программе ссылку на источник вопроса. Например, указать название издания, автора, издательство, год выпуска, номер страницы в издании, откуда был взят вопрос. Если вопрос был взят из Интернет-источника, то указать ссылку на страницу сайта - URL.

    2 этап. Разработка интерфейса.

    Этот этап работы требует от разработчика не только умения выбирать элементы управления Windows, но и знания основных закономерностей восприятия информации. Если к вопросу можно использовать графический материал, то использовать его. Лучше один раз увидеть, чем сто раз услышать!

    3 этап. Написание логики программы.

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

    Практическая часть. Ход работы.

    1. Создать оконное приложение Windows на тему: «Тестовая программа по географии». Основные
    требования к интерфейсу приложения:

    • Приложение должно содержать основное окно (форму) и окно с данными о разработчике приложения.

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

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

    • Вопросы, варианты ответов должны быть оформлены в виде отдельных фреймов. Количество вопросов (фреймов) должно быть 15.

    • Каждый вопрос должен иметь текстовую формулировку, может иметь графические элементы (фотографии), предлагать пользователю четыре варианта ответа, один из которых должен быть верным, остальные неверными. Выбор варианта ответа - с помощью радиокнопки. Переход к следующему вопросу должен быть с использованием соответствующей кнопки в форме.

    • В окне с каждым вопросом пользователь должен видеть вопрос, варианты ответа и номер вопроса, который в данный момент предложен пользователю.

    2. Логика работы приложения.

    • После запуска приложения в окне должно отображаться приветствие и правила проведения теста. После ознакомления с ними пользователь должен иметь возможность перейти к первому вопросу.

    • Выбор вопроса - последовательно от первого к последнему.

    • После выбора ответа на очередной вопрос пользователь должен с использованием соответствующей кнопки перейти к следующему вопросу. При этом программа должна определить, верный ли ответ был дан пользователем и в случае верного ответа на данный вопрос присвоить один балл, в противном случае - ноль баллов за данный ответ.

    • В конце теста после выбора ответа на последний вопрос и перехода к результатам теста программа должна пользователю выдать общий балл в следующей форме, например: Получено 10 баллов из 15.

    • Кроме общего результата пользователю необходимо представить результат тестирования по каждому вопросу отдельно. Например: Вопрос 1 - Верно, Вопрос 2 - неверно, и т.д.

    3. Проект должен быть сохранён в отдельной папке. Все внешние файлы, относящиеся к проекту
    (текстовые и графические) должны располагаться в папке проекта. При переносе приложения на
    другой компьютер папка с файлами проекта должна быть скопирована целиком.

    Тема: Многооконные приложения. Модальные и немодальные окна. Основные вопросы:

    • Применение в проектах нескольких форм.

    • Рассмотрение различных видов окон - модальных и немодальных. Теоретическая часть.

    Форма является важнейшим визуальным компонентом. Формы представляют собой видимые окна Windows и являются центральной частью практически любого приложения. Термины "форма" и "окно" являются синонимами и обозначают одно и то же.

    Форма представляется компонентом Form класса TForm, на основе формы начинается конструирование приложения. На форме размещаются визуальные компоненты, образующие интерфейсную часть приложения, и системные (невизуальные) компоненты. Таким образом, форма представляет собой компонент Delphi, служащий контейнером для всех других компонентов.

    Создание нового приложения начинается с того, что Delphi автоматически предлагает пустое окно — форму Form1. В принципе возможно создание и безоконного приложения, однако большинство приложений имеет видимое на экране окно, содержащее его интерфейсную часть.

    Каждое приложение может иметь несколько форм, одна их которых является главной и отображается первой при запуске программы. При закрытии главного окна (формы) приложения прекращается работа всего приложения, при этом также закрываются все другие окна приложения. В начале работы над новым проектом Delphi по умолчанию делает главной первую форму (с первоначальным названием Forml). В файле проекта (DPR) эта форма создается первой, например:

    Application.Initialize;

    Application.CreateForm(TForml, Forml); Application.CreateForm(TForm2, Form2); Application.Run;

    Программно можно сделать главной любую форму приложения, указав вызов метода CreateForm создания этой формы первым. Например, для задания Form2 в качестве главной формы можно записать следующий код:

    Application.Initialize;

    Application.CreateForm(TForm2, Form2); Application.CreateForm(TForml, Forml); Application.Run;

    При конструировании приложения более удобно указать главную форму в окне параметров проекта, вызываемом командой Project -- Options -- Проект -- Параметры. Главная форма выбирается в раскрывающемся списке Main Form на странице Form, после этого Delphi автоматически вносит в файл проекта соответствующие изменения.

    Форма может быть модальной и немодальной. Немодальная форма позволяет переключиться в другую форму приложения без своего закрытия. Модальная форма требует обязательного закрытия перед обращением к любой другой форме приложения.

    Из всех созданных форм Delphi при выполнении приложения автоматически устанавливает видимой главную форму, для этого свойству Visible этой формы устанавливается значение True. Для остальных форм значение этого свойства по умолчанию равно False, и после запуска приложения другие формы первоначально на экране не отображаются. Программист после создания форм по мере необходимости сам должен обеспечивать их отображение и скрытие в процессе работы приложения, управляя свойством Visible.

    Даже если форма не видима, ее компонентами можно управлять, например, из других форм. Другим способом управления видимостью форм на экране являются соответственно методы Show и Hide. Процедура Show отображает форму в немодальном режиме, при этом свойству Visible устанавливается значение True, а сама форма переводится на передний план. Процедура Hide скрывает форму, устанавливая ее свойству Visible значение False.

    Если окно уже видимо, то вызов метода Show переводит форму на передний план и передает ей фокус управления.

    Пример. Отображение и скрытие форм.

    procedure TForml.btnShowFormsClick(Sender :TObject);

    begin

    Form2.Visible := true; Form3.Show; end;

    procedure TForml.btnHideFormsClick(Sender :TObject);

    begin

    Form2.Visible := false; Form3.Hide; end;

    Нажатие кнопок btnShowForms и btnHideForms, расположенных на форме Form1, приводит соответственно к отображению и скрытию форм (удалению с экрана) Form2 и Form3. В момент отображения формы на экране, когда ее свойство Visible принимает значение True, возникает событие onShow. Соответственно при скрытии формы, когда ее свойство Visible принимает значение False, возникает событие OnHide.

    Каждый раз при получении фокуса ввода формой, например, при нажатии кнопки мыши в области формы, происходит ее активизация и возникает событие onActivate. При потере фокуса формой возникает событие OnDeActivate.

    Для закрытия формы используется метод Close, который удаляет форму с экрана. Процедура Close делает форму невидимой, не уничтожает созданный ее экземпляр, и форма может быть снова вызвана на экран, например, с помощью методов Show или ShowModal. В случае закрытия главной формы прекращается работа всего приложения.

    Пример. Закрытие формы.

    procedure TForm2.btnCloseClick(Sender: TObject);

    begin

    Form2.Close; end;

    Кнопка btnclose закрывает форму Form2. Для этой кнопки полезно задать соответствующий заголовок (свойство caption), например, Закрыть.

    Уничтожение формы можно выполнить с помощью метода Free, после чего работа с этой формой невозможна, и любая попытка обратиться к ней или ее компонентам вызовет исключительную ситуацию (ошибку). Необходимость уничтожения формы может возникнуть при оформлении заставок или при разработке больших приложений, требующих экономии оперативной памяти.

    Пример. Удаление экземпляра формы.

    procedure TForm3.btnDestroyClick(Sender: TObject);

    begin

    Form3.Free; end;

    Кнопка btnDestroy уничтожает форму Form3. Для этой кнопки полезно задать соответствующий заголовок, например, Удалить.

    При закрытии и уничтожении формы происходят следующие события, указанные в порядке их возникновения:

    OnCloseQuery;

    OnClose;

    OnDeActivate;

    OnHide;

    OnDestroy;

    Событие OnCloseQuery типа TCioseQueryEvent возникает в ответ на попытку закрытия формы. Обработчик события получает логическую переменную признак CanClose, определяющую, может ли быть закрыта данная форма. По умолчанию эта переменная имеет значение True, и форму можно закрыть. Если установить параметру CanClose значение False, то форма остается открытой. Такую возможность можно использовать, например, для подтверждения закрытия окна или проверки, сохранена ли редактируемая информация на диске. Событие OnCloseQuery вызывается всегда, независимо от способа закрытия формы.

    Пример. Процедура закрытия формы.

    procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    begin

    CanClose := MessageDlg('Вы хотите закрыть форму?', mtConfirmation, [mbYes,

    mbNo], 0) = mrYes;

    end;

    Здесь при закрытии формы Form2 выдается запрос на подтверждение операции, который представляет собой модальное диалоговое окно с текстом "Вы хотите закрыть форму?" и двумя кнопками — Yes и No. В случае подтверждения нажатием кнопки Yes форма закрывается, в противном случае закрытия формы не происходит.

    Иногда для проверки условия, что нажата именно клавиша Yes желательно выполнить проверку на тот случай, если после закрытия окна необходимо открыть другое окно. Например, пользователь пытается преждевременно закрыть окно до завершения программы. Процедура по событию FormCloseQuery всегда в качестве параметра использует логическую переменную CanClose, которой присваивается значение true, если пользователь подтверждает закрытие командой Yes, иначе эта переменная принимает значение false.

    procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin

    CanClose := MessageDlg('Вы хотите закрыть форму?', mtConfirmation, [mbYes, mbNo], 0) = mrYes;

    if (CanClose = true) then MForm.Show; end;

    Использование в проекте нескольких форм позволяет программисту создавать иерархические приложения, где из одного главного окна можно вызвать окно - модальное или немодальное. Если в пределах всего проекта возникает необходимость из одного модуля передавать данные в другой модуль, то очевидно, что для этих целей можно использовать глобальные переменные.

    Глобальные переменные - переменные, область действия которых распространяется за пределы одной процедуры или функции. Все переменные, объявленные внутри процедуры или функции, являются локальными. Т.е. после окончания работы соответствующей процедуры или функции значения этих переменных удаляются из памяти компьютера. Если имена переменных в разных процедурах совпадают, то это различные переменные. Каждая из них является локальной для той процедуры, где она была объявлена.

    Пример. Объявление локальных переменных в процедуре.

    procedure <имя процедуры>; var

    i: integer; summa: real;

    Если в пределах одного модуля необходимо использовать глобальные переменные, то они аналогично локальным объявляются в теле модуля в разделе interface (интерфейсная секция). Обычно в качестве глобальной переменной модуля объявляется хотя бы одна переменная - форма. В этом же блоке объявления переменных при необходимости объявляются все глобальные переменные данного модуля.

    var

    Form2: TForm2;

    M: integer; //глобальная переменная модуля.

    Возникает вопрос, где необходимо объявить глобальные переменные, относящиеся ко всему проекту, т.е. ко всем модулям? Для этого программист может использовать дополнительный модуль - файл *.pas, который можно создать и в нём объявить все нестандартные типы данных, переменные, относящиеся ко всему проекту в целом. Например, для разработки многооконного приложения, в котором необходимо использовать несколько форм необходимо передавать значения переменной из одной формы в другую и там использовать её (переменную), возможно и изменять её значение. Для этого в состав проекта необходимо добавить новый модуль: меню FileNewUnit

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

    unit unit2;

    interface implementation

    Блок объявления глобальных переменных необходимо добавить в интерфейсную секцию. Заголовок модуля необходимо задать так же как и имя этого файла в дальнейшем - имя после служебного слова unit. Например, после всех необходимых изменений содержимое данного модуля будет иметь вид:

    unit globa; //заголовок модуля, interface //интерфейсная секция

    var summa: integer; //блок объявления глобальных переменных implementation //секция реализации - остаётся пустой

    end.

    Для использования глобальной переменной во всех модулях проекта такой модуль необходимо сохранить в папке проекта под именем, совпадающим с заголовком модуля. Например, globa.pas

    Однако, этого недостаточно! Для использования всех глобальных переменных необходимо в каждом модуле проекта, где будут использованы объявленные глобальные переменные, имя модуля необходимо добавить в раздел uses в каждом модуле, но не в секции interface, а в секции implementation

    implementation

    uses M2, Globa; // имена модулей, используемых в данном модуле.

    Только в этом случае переменная summa (и все остальные переменные, если они объявлены) может быть использована в тех модулях, где модуль Globa объявлен в секции uses.


    Практическая часть.

    Ход работы.

    1. Создать новый проект.

    2. Для окна проекта задать следующие свойства:




    • Размер формы: ширина - 700 пикселей, высота - 500 пикселей.

    • Заголовок формы - Лабораторная работа № 12. Тестовая программа.

    • Для предотвращения изменения размера окна указанные размеры задать в свойстве Constraints формы.

    3. С использованием компонентов сконструировать интерфейс программы. Интерфейс должен содержать
    несколько окон, которые должны последовательно менять друг друга при нажатии кнопки Далее. Первая
    форма должна содержать окно приветствия. Данная форма должна быть главной формой, остальные окна -
    модальными.



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







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

    Например, вопрос, связанный с иллюстрацией:




    Для суммирования количества всех верных ответов необходимо в отдельном модуле объявить глобальную переменную целого типа и использовать её для увеличения на 1 в случае выбора верного ответа.

    В проекте использовать не менее 8-10 окон с вопросами.

    Для вывода результатов теста использовать ещё одну форму, в которой необходимо пользователю в

    текстовой форме сообщить о результатах теста - количестве правильных ответов.

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


    1   ...   4   5   6   7   8   9   10   11   12


    написать администратору сайта