Читаем Программирование онлайн бесплатно
Рассмотрим конкретные проблемы программирования. Покажем раздел Delphi, который называется диалоги. С одной стороны, это достаточно простой раздел. Затруднительным является вопрос о том, как можно совершить операции над файлом, который должен выбрать пользователь. В различных литературных источниках встречаются разные варианты решения и создания дополнительной формы объекта: и попытка заставить пользователя от руки написать адрес файла, и предлагали воспользоваться компонентами Treeview, OutLine и им подобными. Однако существует и более короткий и простой путь для решения проблемы. Достаточно использовать компоненты OpenDialog. Этот компонент легко устанавливается на форму проекта в форме квадрата. В случае запуска программы он невидим. Квадрат только указывает на то, что компонент установлен и дает возможность обращаться к его свойствам с помощью инспектора объектов. Рассмотрим их поподробнее.
После установки компонента на конструкцию проекта диалоговое окно возможно активизировать, применяя функции Execute: Boolean. В этом случае, если пользователь выбрал один или несколько файлов и нажал кнопку ОК, функция возвращает True. Свойство элемента FileName включает имя последнего файла из всех выбранных в диалоге. Свойство Files является списком всех файлов, выбранных в диалоге. Свойство InitialDir определяет каталог, к которому диалог обращается в случае открытия. Свойство Title включает в себя заголовок диалогового окна. Необходимо кроме этого отметить свойство Filter. С помощью данного свойства в случае выбора и сохранения файлов удобно производить отбор файлов только с заданными расширениями. Например, при создании фильтра для исполняемых файлов в свойство должна входить следующая строка:
'Исполняемые файлы | *.EXE'
В одном фильтре можно отбирать файлы и с разными расширениями:
'Графические изображения | *.JPG; *.GIF; *.PNG'
Фильтр также можно создать в обычном редакторе, связанном со свойством Filter в инспекторе объектов.
Осуществить сообщения можно с помощью нескольких процедур: с помощью процедуры ShowMessage, функции MessageDlg, создания дополнительного окна.
Процедура showmessage дает возможность вывести пользователю простое сообщение. При этом образуется дополнительное окно с названием проекта и кнопкой ОК. Выглядит все это так:
Синтаксис: ShowMessage(Msg: string);
Пример:
ShowMessage('Все задачи выполнены успешно');
Функция messageDlg дает возможность создавать сложные диалоговые запросы с применением обратной связи. Имеет форму дополнительного окна, дополненного изображением. Кроме того, можно применять диалоговые запросы. Название окна определяется типом запроса.
Синтаксис:
MessageDlg(Msg: string; AType: TMsgDlgType; ABut-tons: TMsgDlgButtons; HelpCtx: Longint): Word;
Msg – строковой параметр. Определяет выводимое сообщение;
Atype – внутренний параметр функции. Определяет тип сообщения:
1) mtWarning – сообщение о предупреждении;
2) mtError – сообщение об ошибке;
3) mtInformation – информационное сообщение;
4) mtConfirmation – сообщение о подтверждении;
5) mtCustom – сообщение не содержит в углу изображения. Название окна соответствует названию
исполняемого файла (аналогично showmessage);
Abuttons – определяет имена кнопок, отображающиеся в диалоговом запросе. Возможны значения: mbYes, mbNo, mbOK, mbCancel, mbHelp, mbAbort, mbRetry, mblgnore, mbAll;
HelpCtx – включает номер раздела, используемый пользователем, если он вызовет справку, когда диалог активизирован.
Например:
MessageDlg(‘Продолжить выполнение программы’,
mtConfirmation, [mbYes, mbNo], 0);
Для определения того, какой вариант ответа вы/
брал пользователь, можно применить простую про/
верку. В этом случае исходный код будет иметь сле/
дующий вид:
If MessageDlg(‘Закончить выполнение задачи?’,
mtConfirmation, [mbYes, mbNo], 0) = mrYes
Then
Begin
MessageDlg(‘Выполнение задачи закончено.’, mtIn/
formation, [mbOk], 0);
Создание сообщения с применением дополнительного окна достаточно трудно. Данный способ применяется для создания сложных запросов, когда одного только «Да» и «Нет» недостаточно. Например, когда от пользователя необходимо получить код продолжения, в зависимости от которого приложение выполнит те или иные операции.
Приведем некоторые из самых общих процедур этой категории.
1. Замена универсальных инструкций учитывающими конкретную ситуацию, например замена команды умножения на степень двойки на команды сдвига.
Уменьшение числа передач в программе: вследствие преобразования подпрограмм в макрокоманды для прямого включения в исполнимый код; за счет преобразования условных переходов, так, чтобы условие перехода было истинным относительно реже, чем причины для его отсутствия; перемещение условий общего характера к началу разветвленной последовательности переходов; изменение вызовов, сразу после чего происходит возврат в программу, в переходы и т. д.




