Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Управление Файлами проекта Delphi
+ Проект — это совокупность исходных файлов для всего приложения в целом. Окно менеджера проектов Delphi позволяет вам управлять выбором файлов исходных модулей и форм, используемых в вашем проекте. Можно представить себе проект как объект самого высокого уровня в вашем приложении, состоящий из более мелких объектов, таких как формы и объекты-файлы с исходным текстом. Конечно, приложение может использовать только файлы форм и модулей, однако это представление позволит вам перейти к разработке приложений более крупного масштаба.
Чтобы лучше понять, что такое проект Delphi, вызовите менеджер проектов, выбрав опцию Project Manager. Менеджер проектов содержит список различных файлов, входящих в проект Delphi. Существует три типа таких файлов. 1. Единственный проектный файл, содержащий главную программную секцию, которая управляет приложениями Windows, созданными в Delphi. Этот файл имеет расширение.DPR. Доступ к нему может быть осуществлен с помощью команды Project Source. Проектный файл не является ни формой, ни модулем, это файл общего назначения, который запускается в момент загрузки вашего приложения. 2. Один или несколько файлов форм (с соответствующими модулями). Эти файлы содержат информацию о том, как осуществляется управление формами. Файлы форм обычно имеют расширение.DPM. В приложении Delphi имеется, по крайней мере, одна форма. 3. Ноль или более файлов с библиотечными модулями на языке Object Pascal. Это файлы с расширением.PAS, которые содержат библиотеки вспомогательных подпрограмм и подпрограмм поддержки, которые вызываются другими частями приложения (другие модули с кодом, присоединенные к формам или управляющим методам). Вам требуется, по крайней мере, один библиотечный модуль для получения кода, осуществляющего функции управления в главной форме. Для больших приложений характерно наличие многих библиотек. Библиотечные модули содержат объявления классов, которые поддерживают визуальные формы и осуществляют управление. Эти модули содержат все необходимое для реализации процедур обработчиков событий, придающих формам динамику. Процедуры и функции Помимо объектной модели, визуальная среда Delphi обеспечивает вас моделью управления событиями; бытийная модель позволяет вам соединять программу и различные процессы с компонентами и формами в соответствии с порядком возбуждения конкретных событий. Процесс разработки с использованием этих двух моделей очень скор и дает разработчику возможность писать обозримые программы. Это практически устраняет необходимость старомодного процедурного проектирования. Тем не менее, может возникнуть потребность использовать процедурный стиль при дроблении очень больших методов или обработчиков событий на меньшие, выполняемые последовательно программные блоки функций или процедур. Эта возможность имелась в Pascal, имеется также и в Delphi, поскольку Delphi все еще поддерживает процедурную модель. Имеется несколько способов сделать процедуру или procedure MyProc; begin MessageDIg ('Yes', mtWaming, [mbOk], 0); end; procedure Tforml.Button 1click(Sender: TObjact); begin MyProc; end; end. В этом примере код для события OnClick от стандартной кнопки вызывает процедуру MyProc. Компилятор не выдаст предупреждения, так как он уже миновал оператор MyProc в начале раздела реализации. Второй способ сделать вашу процедуру доступной — это поместить ее в качестве локальной процедуры внутри процедуры обработчика события OnClick: implementation procedure TForml.ButtonlCllcMSender; TObject); procedure MyProc; begin MessageDIg ('Yes', mtWarning, [mbOk], 0);
end; begin MyProc; end; end. Если же код программы примет следующий вид: implementation procedure TForml.ButtonlCllcMSender; TObject); begin MyProc; end; procedure MyProc; begin MessageDIg ('Yes', mtWarning, [mbOk], 0); end; end. ...то компилятор выдаст предупреждение, потому что он не знает о существовании MyProc в момент обращения к ней из обработчика события. Эта проблема может быть преодолена путем помещения объявления процедуры в начале раздела реализации с последующим ключевым словом forward. Implementation procedure MyProc; forward; procedure TForml.ButtonlCllcMSender; TObject); begin MyProc; end; procedure MyProc; begin MessageDIg ('Yes', mtWarning, {mbOk], 0); end; end. Заголовок процедуры объявлен, при этом ее имя и принимаемые пароли видимы из любой части программы, расположенной ниже заголовка. Изменение состоит в том, что ключевое слово forward сообщает обращающейся программе, что исполняемый код процедуры следует искать дальше. Имеется еще один способ сделать эту процедуру доступной в вашем модуле. Как вы знаете, все, объявленное только в разделе реализации модуля, является доступным лишь в пределах этого модуля. Заметьте, что в предыдущих примерах не используется раздел интерфейса модуля. Процедура MyProc, таким образом, является локальной для модуля. Если модуль предполагается поместить в uses другого модуля, то MyProc будет недоступной, что приводит нас к третьему методу включения процедуры в модуль: Interface procedure Tforml.Button 1Click(Sender: TObject); procedure MyProc; Implementation procedure Tforml.Button 1Click(Sender: TObject); begin MyProc; end; procedure MyProc; begin MessageDIg ('Yes', mtWarning, [mbOk], 0); end; end. На этот раз объявление этой процедуры помещено в разделе интерфейса. Оно действует как прототип и делает функцию доступной из этого модуля или из любого, использующего данный модуль. Расширения языка PascaI Рассмотрим дополнения к языку Pascal, сделанные для Delphi. Некоторые из этих дополнений расширяют ядро языка Pascal, в то время как другие намного упрощают собственно программирование в Delphi. 1. Оператор Case. Delphi обеспечивает оптимизацию оператора Case путем внесения двух изменений в работу этого оператора: * диапазоны в операторе Case не должны перекрываться. Например, отныне недопустимым является оператор Case вида: Case MyChar of 'А', Т, 'О', 'U', 'В': Writeln ('Гласная'); 'А'..' Z': Writeln ('Прописная'); End;
• упорядочение констант в операторе Case в соответствии с порядком сортировки используемого типа сверху вниз (последовательно слева направо) позволяет компилятору оптимизировать выполнение оператора Case в виде перехода вместо того, чтобы вычислять каждый раз смещение. Вот пример оператора Case, обеспечивающего набор оптимизированных переходов: Case MyChar of 'О'..'9': Writeln ('Цифра'); 'А'..' Z': Writeln ('Прописная'); -'а'..' х': Writeln ('Строчная'); Else Writeln ('Другие символы'); End; 2. Открытые массивы. Borland Pascal 7.0 ввел открытые массивы, позволяющие вам разрабатывать процедуры общего назначения для работы со статическими массивами переменого размера. Например, вы можете объявить функцию CalcMean() следующим образом: Function CalcMaan(X: Array of Real): Real; Параметр х является открытым массивом базового типа Real. Можно использовать функцию CalcMean() для обработки массивов различного размера, как показано в следующем фрагменте программы: Type ArraylO =" Array[1..10] of Real; Array20 = Array[1..20] of Real; Var X1: Array10; X2: Array20; Function CalcMean (X: Array of Real): Real; Begin (определяющие операторы); End; Begin GatData(xl); GetData(x2); Writeln ('Среднее значение массива XI = ', CalcMean (XI)); 1 Writeln ('Среднее значение массива Х2 = ', CalcMean (Х2)); End. Delphi делает параметры типа открытых массивов еще более полезными, разрешая построить массив и передать его в качестве параметра. Для этого надо заключить в квадратные скобки разделенный запятыми список значений элементов массива. Вот фрагмент программы, использующей функцию Са1сМеап() вариантом создания открытых массивов: Function CalcMean (X: Array of Real): Real; Begin (операторы, определяющие функцию); End; Begin Writeln ('Среднее значение массива 1 = ', CalcMean ([1.2, 3.4, 5.6, 7.8]); Writeln('CpeflHee значение массива 2 = ', CalcMean ([55, 67.6, 41.2, 48.4]); End. 3. Переменная Result в функции. Delphi усовершенствует программирование функций Begin Begin Cube: =X*X*X; Result: =X*X*X; End; End; Задание. Попробуйте создать проект для расчета корней квадратного уравнения. Editl будет использован для ввода коэффициента А, Edit2 — коэффициента В, Edit3 — коэффициента С. Создайте две кнопки: «Найти корни» и «Выход».
Коды кнопок «Найти корни»: procedure TForm1.Button1Click(Sender: TObject); vard, a, b, c, x1, x2: real; begin a: =StrToFloat(form1.Editl.Text); b: =StrToFloat(form1.Edit2.Text); c: =StrToFloat(form1.Edit3.Text); d: =sqr(b)-4*a*c; if d< 0 then begin MessageDlg('BHMMaHne! Нет действительных корней! ', mtlnformation, [mbOk], 0); form1.Label8.Caption: ='; form1.Label9.Caption: ='; end; if d=0 then begin MessageDlgfOflHH действительный корень! ', mtlnformation, [mbOk], 0); x1: =(-b)/(2*a); x2: =x1; forrnl.1_аЬе18.Сарйоп: ='Первый корень х1 =' +FloatToStr(x1); form1.Label9.Cap|ion: ='BTopon корень x2 =' +FloatToStr(x2); end; if d> 0 then begin MessageDlgfflBa действительных корня! ', mtlnformation, [mbOk], 0); x1: =((-b)+sqrt(d))/(2*a); x2: =((-b)-sqrt(d))/(2*a); form! 1аЬе18.Сарйоп: ='Первый корень x1 =' +FloatToStr(x1); forrnl.1_аЬе19.Сар1юп: ='Второй кореньх2 =' +FloatToStr(x2); end; end; «Выход»: procedure TForm1.FormActivate(Sender: TObject); begin forrnl.Editl.SetFocus; end; Сохраните форму и проект (File / Save all) и выполните ваш проект (Run / Run) Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 995; Нарушение авторского права страницы