Упражнения. Совершенствование проекта.

1. Изменить интерфейс программы: изменить шрифты, цвет экрана и букв.

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

2. Сделать так, чтобы когда курсор мыши находится в поле ListBox1, появлялась бы подсказка о том, что надо сделать.

Подсказка. Воспользуйтесь свойствами Hint Showhint компонента ListBox1.

3. Сделать так, чтобы при нажатии клавиши Close появлялось бы окно сообщения “Вы уверены?”

Подсказка. Применить функцию MessageDlg.

Контрольні питання:

1. Надайте характеристику індикаторам CheckBox та CheckListBox.

2. Надайте характеристику компонентам TrackBar та ScrollBar.

3. Опишіть процедуру роботи компонента Timer.

4. Охарактеризуйте роботу компонента MainMenu - Головне меню.

5. Надайте характеристику компоненту HotKey.

6. Надайте загальну характеристику панелям Delphi.

7. Надайте загальну характеристику панелям загального призначення – Panel, GroupBox, Bevel, ScrollBox, Splitter.

8. Надайте характеристику багатосторінковим панелям та їх компонентам – TabControl, PageControl, TabSet, TabbedNoteBook, NoteBook.

9. Охарактеризуйте роботу інструментальних панелей та їх компонентів – ToolBar nf PageScroller.

10. Опишіть роботу перестроюваних панелей та їх компонентів CoolBar та ControlBar.

11. Охарактеризуйте роботу полоси стану – StatusBar.

 


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.4: ОБРОБКА ВИКЛЮЧНИХ СИТУАЦІЙ

 

Самостійне заняття №35 –Помилки та виключення

План заняття

1. Поняття синтаксичних помилок

2. Поняття логічних помилок

3. Поняття динамічних помилок

4. Характеристика поняття виключна ситуація

 

Ошибки, возникающие в процессе создания и работы прило­жений, можно условно разделить на три типа.

1) Синтаксические ошибки возникают при нарушении синтак­
сиса языка. Эти ошибки выявляются компилятором на этапе раз­
работки программы. Компилятор указывает разработчику строку
в тексте программы, где имеется ошибка, и выдает соответствую­
щую информацию о ней.

2) Логические ошибки имеют место в случае неправильной реализации алгоритма. При этом программа продолжает работать, но выдает неправильные результаты.

3) Динамические ошибки, или ошибки выполнения, возникают при выполнении программы в результате неправильной работы опе­раторов, процедур или функций программы, а также операционной системы. Типичный пример такой ошибки - это деление на нуль.

Разработчик приложения должен учитывать возможность воз­никновения ошибок выполнения и обрабатывать их определен­ным образом. Для обработки динамических ошибок в Delphi вве­дено понятие исключительной ситуации.

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

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

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

Класс Exceptionвходит в состав модуля SysUtilsи явля­ется базовым для всех исключений. Потомки этого класса содер­жат большое количество исключений, которые могут возникнуть в процессе выполнения приложения. Любые новые классы исклю­чительных ситуаций должны также создаваться как потомки клас­са Exception.В этом случае обеспечивается возможность их распознавания и обработки как исключений.

Класс Exceptionимеет всего два свойства.

Свойство Message(тип String)содержит описание исклю­чительной ситуации. Этот текст обычно выводится в диалоговом окне глобального обработчика исключительных ситуаций.

Свойство HelpContext(тип THelpContext)содержит но­мер идентификатора контекстной помощи для объекта исключения. Данное свойство обеспечивает отображение соответствующего раз­дела справки при вызове контекстной помощи.

Основные методы класса Exceptionпредставлены ниже.

Метод Create (const Msg: String)позволяет создать объект исключительной ситуации, текст с описанием которой со­держится в параметре Msg.

Метод CreateFmt (const Msg: String; const Args: array of const)также служит для создания объекта исключительной ситуации, но дополнительно позволяет задавать текст сообщения в форматированном виде.

Метод CreateHelp (const Msg: String; Ahelp-Context: Integer)предназначен для создания объекта ис­ключения с заданием для него номера идентификатора контекст­ной помощи.

Метод CreateFmtHelp (const Msg: String; const Args: array of const; AhelpContext: Integer)ис­пользуется для создания объекта исключения и дает возможность задавать текст сообщения в форматированном виде и устанавливать номер идентификатора контекстной помощи для данного объекта.

Обработка конкретных исключительных ситуаций может осу­ществляться не только с использованием самого класса Excep­tion,но также при помощи большого числа потомков данного класса. В свою очередь, многие из потомков класса Exceptionтакже порождают новые классы, обеспечивающие обработку ис­ключительных ситуаций, что образует целую иерархию объектов исключений. Так, например, класс EIntErrorявляется потомком класса Exception.Он представляет собой базовый класс для об­работки ошибок, связанных с операциями над целыми числами. От данного класса происходит ряд других классов, предназначенных для обработки специализированных исключений, таких, как при­своение целочисленной переменной значения, выходящего за пре­делы допустимого диапазона (класс ERangeError),или деление целого числа на нуль (класс EDivByZero).

Контрольні питання

1. Навести характеристику поняття синтаксичних помилок

2. Навести характеристику поняття логічних помилок

3. Навести характеристику поняття динамічних помилок

4. Охарактеризувати поняття виключна ситуація


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.5: ОРГАНІЗАЦІЯ ПРИКЛАДНИХ ЗАСТОСУВАНЬ

Лекція №48 –Керування прикладними застосуваннями

План заняття

1. Характеристика класу TApplication

2. Призначення класу TApplivation

3. Характеристика властивостей та функцій даного класу

 

Для описания приложения в целом используется класс TApplication.Объект Applicationэтого класса автомати­чески создается системой Delphi при каждом запуске приложения. Методы и свойства класса TApplicationотражают принципы, установленные в операционной системе Windows, для создания, выполнения, поддержания и уничтожения приложения.

Объект Applicationпредставляет собой окно Windows со стандартной оконной API-процедурой WndProc.Delphi дает воз­можность программисту работать на более высоком уровне без необходимости использования функций API. Таким образом, класс TApplicationупрощает взаимодействие между разра­ботчиком и окружением Windows.

Класс TApplicationприменяется для:

■ выдачи сообщений Windows;

■ подключения справочной системы;

■ управления исключительными ситуациями;

■ управления фундаментальными частями, определенными операционной системой Windows для приложения, такими, как MainWindow, WindowClass.

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

Информация об объекте Applicationнаходится в исходном файле проекта (*.DPR). На стадии разработки приложения данный объект недоступен, то есть нельзя просмотреть или изменить зна­чения его свойств, а обработчики событий можно создавать толь­ко вручную.

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

1) Процедура Initialize,которая инициализирует прило­жение в целом, при этом выполняются операторы раздела initializationвсех модулей приложения.

Процедура CreateForm (FormClass: TFormClass; var Reference), которая создает форму и присваивает ее пе­ременной, определяемой параметром Reference.Тип создавае­мой формы задается параметром FormClass.Владельцем данной формы является объект Application.Метод CreateFormвызывается для каждой формы, входящей в состав прило­жения. Если требуется отменить автоматическое создание формы, то необходимо исключить из файла проекта данный метод. Перед использованием метода форма обязательно должна быть предва­рительно создана, иначе произойдет ошибка.

3) Процедура Run,которая непосредственно запускает прило­жение.

В большинстве случаев (особенно при создании небольших и несложных приложений) нет необходимости работать со свойст­вами, методами и событиями объекта Application,но иногда требуется использовать некоторые из них для повышения эффек­тивности работы приложения. В табл. 7.1 приведены наиболее часто используемые свойства объекта Application.

Далее будут более подробно рассмотрены некоторые из выше­перечисленных свойств и даны необходимые пояснения к их ис­пользованию.

Свойство ExeName(типа String)доступно только для чте-1 ния и только в момент выполнения приложения. Для того чтобы из спецификации файла выделить путь и имя файла, используются соответственно файловые функции ExtractFilePathи ExtractFileName.

Свойство HelpFile(тип String)доступно во время выполне­ния приложения. По умолчанию значением данного свойства являет­ся пустая строка. Свойства и методы, связанные с выводом справоч­ной информации, не действуют до тех пор, пока не будет задано имя справочного файла. Имя указывается, как правило, в файле проекта или в обработчике события создания главной формы. В случае, когда необходимо использовать несколько справочных файлов, они могут выбираться поочередно в зависимости от ситуации.

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

Функция HelpCommand (Command: Word; Data: Lon-gint): Booleanобеспечивает возможность доступа к коман­дам в Windows Help API. При вызове этого метода открывается стандартное окно справочной системы Windows.

Данному файлу (winhelp.exe) передается команда, указанная параметром Command,и номер раздела справочной системы, за­даваемый параметром Data.В результате на экране появляется необходимое окно справочной системы Windows.

Значение параметра Commandопределяет тип помощи. Наи­более часто используются следующие команды:

■ HELPFINDER - на экран выводится диалоговое окно Help Topics версии 4.0. В случае использования данной команды, параметр Dataигнорируется;

■ HELPKEY - в справочном окне отображается тема, оп­ределяемая ключевым словом, адрес которого задан па­раметром Data;

■ HELPCONTEXT - в окне справки будет отображен раз­дел, номер которого указан значением параметра Data.

Функция HelpContext (Context: THelpContext): Booleanоткрывает стандартное окно справочной системы Windows и отображает раздел, определяемый параметром Context.Прежде чем вызывать данный метод, необходимо задать значение свойства HelpFile,чтобы оно указывало на имя существующего справочно­го файла. После открытия заданного справочного файла метод HelpContextвызывает помощь в соответствии с параметром Context.Данный параметр имеет значение ID (целое число) спра­вочного контекста внутри справочного файла и ассоциируется с управляющими элементами через одноименное свойство HelpContext этих элементов.

Свойство Hint (тип String) содержит в себе строку под­сказки для компонента независимо от того, отображается подсказ­ка на экране или нет. Параллельно с данным свойством целесооб­разно рассмотреть еще несколько свойств.

Свойство HintPause (тип Integer) устанавливает, через какое время после остановки указателя мыши над областью ком­понента будет показан текст справки, содержащийся в свойстве Hint. По умолчанию текст появляется через 0,5 с.

Свойство HintHidePause (тип Integer) определяет времен­ную задержку, в течение которой справочный текст будет отображать­ся над компонентом. По умолчанию данная задержка составляет 2,5 с.

Свойство HintColor (тип TColor) задает цвет фона под­сказки. По умолчанию фон будет желтым.

Действие свойств HintPause, HintHidePause и HintColor распространяется на все формы и компоненты приложения.

Наряду с этим, объект Application имеет весьма важный метод ProcessMessages, который рассматривается ниже.

При выполнении программой длительных операций либо цик­лов обработки больших объемов данных приложение не реагирует на действия пользователя и не производит своевременного ото­бражения происходящих изменений. Чтобы избежать возникнове­ния подобных ситуаций, необходимо использовать метод Pro­cessMessages. Данный метод вызывает обработку поступивших сообщений, которые ожидают своей очереди.

Вызов метода ProcessMessages рекомендуется вставлять во все циклы, способные привести к достаточно длительной работе приложения. Этот метод также необходимо использовать парал­лельно с проверкой условия на выход из цикла в случае, когда тре­буется, например, предоставить пользователю возможность преры­вать выполнение данного длительного цикла нажатием кнопки или переключателя. Если в такой ситуации не использовать метод ProcessMessages, то приложение просто не будет реагировать на нажатие клавиш, и, следовательно, прервать его выполнение не удастся до тех пор, пока цикл не будет отработан до конца, что без­условно создает некоторые проблемы для пользователя.

Для того чтобы обеспечить закрытие приложения во время вы­полнения цикла, помимо использования метода ProcessMes­sages, следует также добавить в тело цикла условие для проверки свойства Terminated (тип Boolean). Если данное свойство имеет значение True, то это означает, что поступила команда на закрытие приложения и необходимо прервать выполнение цикла и завершить работу программы.

Завершение работы приложения осуществляется при помощи метода Terminate. Данный метод обеспечивает освобождение памяти, занятой проектами, с последующим завершением прило­жения. Однако вместо этого метода чаще используется метод Close главной формы приложения.

Использование метода ProcessMessages можно проиллю­стрировать на следующем примере.

Пример 7.1. Пусть требуется создать приложение с длитель­ным циклом, который прокручивает счетчик от 0 до 100 000. При этом на экране отображается, сколько процентов данной операции выполнено. Необходимо обеспечить возможность остановки, а также выхода из программы в момент выполнения цикла.

Решение. Для реализации этой задачи следует создать форму, на которой размещаются две кнопки Button и надпись Label.

Первая кнопка имеет заголовок "Начать" и используется для запуска выполнения цикла, а вторая кнопка с заголовком "Оста­новить" соответственно позволяет прервать выполнение цикла. Надпись Label будет отображать процент выполнения операции в текущий момент времени. Форма принимает примерно такой вид, как показано на рис. 7.1.

 

 

Код приложения, реализующего решение данной задачи, при­веден в листинге 7.1.

 

 

Как видно из данного листинга, в теле цикла вызывается метод ProcessMessages.После него выполняется проверка двух ус­ловий. Первое из них останавливает цикл в случае, когда флаг Ostanovимеет значение True(это значение будет установлено, если нажата кнопка Остановить). Второе условие осуществляет выход из программы, если был выполнен запрос на ее закрытие.

Если убрать из программы вызов метода ProcessMessages,то до окончания цикла приложение не будет реагировать ни на какие запросы пользователя, а кроме того не будет отображать изменение надписи Label. Иначе говоря, программа просто завис­нет на время выполнения цикла.

Поэтому при разработке приложений следует предусматривать возможность возникновения подобных ситуаций и использовать метод ProcessMessagesдля предотвращения описанных недостатков.

Для обеспечения возможности автоматического создания в ре­дакторе кода заготовок обработчиков событий объекта Application,в Delphi 5 был введен компонент ApplicationEvents ^ События приложения становятся доступными на этапе проектиро-мания при размещении данного компонента на форме. В этом слу­чае обработчики событий программируются так же, как и обра­ботчики событий других объектов, например кнопок либо пере­ключателей.

Из наиболее часто используемых событий приложения можно ныделить события Onldleи OnException.

Событие Onldle(тип TIdleEvent)возникает при простое приложения, например, когда оно ожидает ввода от пользователя. Для того чтобы в этом случае приложение выполняло какие-либо действия, используется обработчик события Onldle.Операции, пключенные в этот обработчик, выполняются каждый раз, когда приложение заканчивает текущую работу и переходит в режим простоя. Код обработчика данного события должен занимать мало места в памяти и выполняться быстро, чтобы не тормозить работу приложения в целом.

Тип TIdleEventимеет параметр Done,который по умолчанию установлен в True.В этом случае, после того как произошло собі тие Onldle,вызывается функция Windows API WaitMessage,ко­торая передает управление другим приложениям, пока новое сооб­щение не появится в очереди приложения. Если Doneимеет значе­ние False,приложение не передает управление другим програм­мам, пока оно находится в состоянии простоя.

Событие Onldleвызывается только один раз после перехода приложения в режим простоя. Оно не вызывается повторно, если только Doneне установлено в False,что, вообще говоря, не реко­мендуется, поскольку приложение, у которого параметр Doneимеет значение False, тратит очень много времени работы центрального процессора, что заметно замедляет работу системы в целом.

Процедура обработки события Onldleобычно описывается и используется в модуле главной формы приложения.

 

Контрольні питання

1. Надати характеристику класу TApplication

2. Навести призначення класу TApplivation

3. Надати характеристику властивостей та функцій даного класу

 


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.5: ОРГАНІЗАЦІЯ ПРИКЛАДНИХ ЗАСТОСУВАНЬ

Лекція №50 –Консольні прикладні застосування

План заняття

1. Характеристика поняття консольне застосування

2. Приклади роботи із консольними застосуваннями та процедура їх створення








Дата добавления: 2014-12-01; просмотров: 1380;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.03 сек.