Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Дополнительное задание.




Реализовать сортировку таблицы по фамилии, названию книги или числу экземпляров. К сожалению, компонент StringGrid не содержит методов сортировки, поэтому ее приходится реализовывать вручную. Для примера можно воспользоваться любым простейшим методом сортировки.

 

 

12. Приложения с несколькими формами

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

Задание. Разработать приложение, содержащее несколько форм:

  • главную
  • информационную форму “О программе (About)”
  • форму для ввода пароля при запуске приложения

 

За основу можно взять любое ранее созданное приложение, например – таблицу текстовых строк.

Порядок работы.

  1. Открыть базовый проект
  2. Добавить в проект новую форму с информацией о программе и ее авторе:

· выбрать в меню системы Delphi команду File / New / Form, после чего появляется новая форма и к проекту автоматически добавляется соответствующий модуль, что можно увидеть в окне Редактора Кода за счет появления второй закладки с именем модуля

· установить основные свойства новой формы: Caption, Name (например – FAbout)

· установить требуемые размеры формы-заставки, установить свойство BorderStyle = bsDialog (окно не может изменять свои размеры), задать режим показа по центру экрана (свойство Position = poScreenCenter)

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

· для текста (компонент Label) можно использовать свойства WordWrap (перенос длинного текста по словам на другие строки) и Alignment (для выравнивания текста по центру)

· для изображения (компонент Image) надо использовать свойства Picture (для загрузки необходимого изображения) и Stretch (для масштабирования изображения внутри области компонента)

· Создать обработчик кнопки закрытия формы стандартным образом (метод Close)

· в меню главной формы добавить пункт “О программе” и создать его обработчик для показа формы-заставки в модальном режиме:

FAbout.ShowModal;

· сохранить новый модуль в каталоге проекта командой File / Save As с изменением имени модуля со стандартного значения Unit2 на более осмысленное, например - UnitAbout

· подключить новый модуль к основному (главному) модулю, для чего в разделе реализации главного модуля после директивы implementation записать строку

Uses UnitAbout;

· сохранить проект и проверить его работу

 

  1. Добавить дополнительные возможности закрытия окна-заставки – по нажатию любой клавиши или по истечению заданного интервала времени. Для этого:

· в Инспекторе Объектов перейти на форму-заставку, активизировав ее и выбрав в раскрывающемся списке ее имя

· установить для формы-заставки свойство KeyPreview в true для того, чтобы форма перехватывала все сообщения от клавиатуры раньше расположенных на ней компонентов

· перейти в Инспекторе Объектов на закладку Events и создать обработчик события формы onKeyDown с вызовом метода закрытия формы-заставки

· разместить на форме-заставке компонент Timer со страницы System, установить его свойство Interval в необходимое значение (например – 10000 миллисекунд) и создать обработчик его единственного события OnTimer с вызовом метода Close

· сохранить проект и проверить его работу

 

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

· добавить новую форму, дать ей заголовок и имя FPassword (или любое другое подходящее), сохранить ее модуль в каталоге проекта под подходящим именем (например – UnitPass)

· установить свойства показа по центру экрана и диалоговый стиль окна (аналогично форме-заставке), а также убрать из заголовка кнопку системного меню (свойство BorderIcons, подсвойство biSystemMenu = false)

· установить свойство Visible в значение false

· в текст модуля в разделе реализации ввести ссылку на модуль основной формы (Uses Unit1)

· разместить на форме текст-приглашение на ввод пароля, компонент-редактор для ввода пароля, у которого с помощью свойства PasswordChar установить символ-заменитель вводимых символов (например – символ *)

· разместить на форме кнопку Проверить и создать ее обработчик, который должен сравнить введенный в редакторе текст с паролем, в случае совпадения показать основную форму вызовом Form1.Show и закрыть окно методом Close, а в противном случае вывести сообщение о неправильном пароле

· разместить на форме кнопку Отменить, обработчик которой должен закрыть все приложение, вызвав метод Terminate специального объекта Application

· вернуться в Инспекторе Объектов к главной форме, установить ее свойство Visible в false и создать обработчик ее события OnShow; это событие возникает ПЕРЕД показом невидимой главной формы и поэтому позволяет сначала показать в модальном режиме форму ввода пароля; для этого необходимо прежде всего добавить в текст главного модуля ссылку на модуль UnitPass (аналогично ссылке на модуль формы-заставки), затем создать обработчик события формы OnShow, в котором лишь показать форму ввода пароля с помощью метода ShowModal

· сохранить проект и проверить его работу

 

  1. Реализованный выше способ использования формы для ввода пароля (кстати, этот способ не является единственным, есть и другие варианты) имеет один недостаток: если закрыть окно ввода пароля не по кнопкам, а с помощью стандартной комбинации клавиш Alt+F4, основная форма активизируется даже при неправильном пароле или вообще без него! Для устранения этого недостатка форма ввода пароля должна уметь распознавать нажатие этих клавиш. Для этого необходимо:

· в Инспекторе Объектов активизировать форму ввода пароля и установить ее свойство KeyPreview = true, что позволяет форме перехватывать весь ввод с клавиатуры раньше своих элементов (редактор, кнопки)

· на вкладке Events для формы ввода пароля выбрать событие OnKeyDown, возникающее при нажатии любой клавиши

· создать обработчик этого события следующего вида:

if (Key = vk_F4) and (ssAlt in Shift) then Application.Terminate;

этот код использует переменную Key с кодом нажатой клавиши и структуру-множество Shift, которая хранит коды нажатых служебных клавиш Alt, Shift, Ctrl и позволяет анализировать их с помощью констант типа ssAlt, ssShift, ssCtrl.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных