Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 11
Текст из файла (страница 11)
Главныймодуль также автоматически формируется средой Delphi. В качестве примерав листинге 2.2 приведен главный модуль нашей программы. Для того чтобыоткрыть этот файл в редакторе кода, в главном меню выберите View >• Units ив появившемся диалоге дважды щелкните по файлу Project!. Есть еще одинспособ открыть файл проекта. В окне Project Manager щелкните правойкнопкой мыши по имени проекта (напомню, что в нашем случае это Projectl)и в появившемся меню выберите пункт View Source.Листинг 2.2 т Главный модуль программыprogram Projectl,{%DelphiDotNetAssemblyCompiler1$(SystemRoot)\microsoft.net\framework\vl.1.4322\System.dll'}{%DelphiDotNetAssemblyCompiler1$(SystemRoot)\microsoft.net\framework\vl.1.4322\System.Data.dll'}{%DelphiDotNetAssemblyCompiler1$(SystemRoot)\microsoft.net\framework\vl.l.4322\System.Drawing.dll'}{%DelphiDotNetAssemblyCompiler'$(SystemRoot)\microsoft.net\framework\vl.1.4322\System.Windows.Forms.dll'}{%DelphiDotNetAssemblyCompiler'$(SystemRoot)\microsoft.net\framework\vl.l.4322\System.XML.dll'}{$R 'WinForml.TWinForml.resources' 'WinForml.resx1}usesГЛАВА 2 • Создаем первые проекты в Borland Delphi 200SSystem.Reflection,System.Runtime.CompilerServices,System.Windows.Forms,'WinForml in 'WinForml.pas' {WinForml.TWinForml:System.Windows.Forms.Form};{$R *.res}{$REGION 'Program/Assembly Information'}[assembly: AssemblyDescription('')][assembly: AssemblyConfiguration('')][assembly: AssemblyCompany('')][assembly: AssemblyProduct('') ]•' •[assembly: AssemblyCopyright('')][assembly: AssemblyTrademark (•' ' ) ][assembly: AssemblyCulture('')][assembly: AssemblyVersion('1.0.*')].[assembly: AssemblyDelaySign(false) ][assembly: AssemblyKeyFile( " ) ][assembly: AssemblyKeyName('')]{$ENDREGION}[STAThread]beginApplication.Run(TWinForml.Create) ;end.В заголовке модуля указано имя программы, далее следуют команды, которыесодержат информацию о том, что именно (какие модули, библиотеки и т.п.)понадобится компилятору Delphi для выполнения сборки нашего проекта.
Каквидите, для сборки нам необходимы динамические библиотеки (dll-файлы),которые входят в состав Microsoft .NET Framework (помните, мы устанавливалиэтот компонент в самом начале?). Теперь с уверенностью можно сказать, для чегонам был нужен компонент Microsoft .NET framework, - он содержит всенеобходимые модули, в которых описаны все используемые нами функции,объекты, компоненты и т.п. Посмотрите внимательно на листинг - вы увидите,что все то, что мы видели в окне редактора кода в секции u s e s , используетсядля составления перечня необходимых для выполнения сборки компонентов,Теперь перейдем к подробному рассмотрению модуля формы.Модуль формыМодуль формы содержит информацию о ее настройках, компонентах, которыена ней присутствуют, а также процедуры обработки событий для этих компонентов.
Большая часть файла также формируется с помощью среды DelphiСоздаем первый проект для Microsoft .MET Frameworkавтоматически. В листинге 2.3 приведен текст модуля формы нашейпрограммы. Теперь осталось разобраться, какая часть текста формируетсяавтоматически, а какая создается непосредственно программистом.Листинг 2.3 • Модуль формы программыunitWinForml;interfaceusesSystem.Drawing, System.Collections, System.ComponentModel,System.Windows.Forms, System.Data;typeTWinForml = class(System.Windows.Forms.Form){$REGION 'Designer Managed Code'}strict privateComponents: System.ComponentModel.Container;TextBoxl: System.Windows.Forms.TextBox;TextBox2: System.Windows.Forms.TextBox;TextBox3: System.Windows.Forms.TextBox;Labell: System.Windows.Forms.Label;Label2: System.Windows.Forms.Label;Label3: System.Windows.Forms.Label;Label4: System.Windows.Forms.Label;Label5: System.Windows.Forms.Label;Buttonl: System.Windows.Forms.Button;Button2: System.Windows.Forms.Button;procedure InitializeComponent;procedure Button2_Click(sender: System.Object;e: System.EventArgs);procedure Buttonl_Click(sender: System.Object;e: System.EventArgs);{$ENDREGION}strict protectedprocedure Dispose(Disposing: Boolean); override;private{ Private Declarations }publicconstructor Create;end,[assembly: RuntimeRequiredAttribute(TypeOf(TWinForml))]implementation{$AUTOBOX ON}{$REGION 'Windows Form Designer generated code'}.
•ГЛАВА 2 Y Создаем первые проекты в Borland Delphi 2005procedure TWinForml.InitializeComponent;beginSelf.TextBoxl : = System.Windows.Forms.TextBox.Create;Self.TextBox2 := System.Windows.Forms.TextBox.Create;Self.TextBox3 := System.Windows.Forms.TextBox.Create;Self.Labell : = System.Windows.Forms.Label.Create;Self.Label2 : = System.Windows.Forms.Label.Create;Self.Label3 : = System.Windows.Forms.Label.Create;Self.Label4 : = System.Windows.Forms.Label.Create;Self.Label5 : = System.Windows.Forms.Label.Create;Self.Buttonl := System.Windows.Forms.Button.Create;Self.Button2 := System.Windows.Forms.Button.Create;Self.SuspendLayout;//// TextBoxl//Self.TextBoxl.Location := System.Drawing.Point.Create(40, 48);Self.TextBoxl.Name := 'TextBoxl';Self.TextBoxl.Size := System.Drawing.Size.Create(48, 20);Self.TextBoxl.Tablndex := 0;Self.TextBoxl.Text := '';//// TextBox2//Self.TextBox2.Location := System.Drawing.Point.Create(40, 76);Self.TextBox2.Name := 'TextBox2';Self.TextBox2.Size := System.Drawing.Size.Create(48, 20);Self.TextBox2.Tablndex := 1;Self.TextBox2.Text := '';//// TextBox3//Self.TextBox3.Location := System.Drawing.Point.Create(40, 104)Self.TextBox3.Name := 'TextBox3';Self.TextBox3.Size := System.Drawing.Size.Create(48, 20);Self .TextBox3 .Tablndex := 2,Self .TextBox3 .Text := '';// LabellSelf.Labell.Location := System.Drawing.Point.Create(24, 16);Self.Labell.Name := 'Labell';Self.Labell.Size := System.Drawing.Size.Create(328, 24);Создаем первый проект для Microsoft ,ШЕТ FramemorkSelf.Labell.Tablndex := 3;Self.Labell.Text :='Введите значения коэффициентов квадратного уравнения:';//// Label2//Self.Label2.Location := System.Drawing.Point.Create(24, 55);Self.Label2.Name := 'Label2',Self.Label2.Size := System.Drawing.Size.Create(16, 16);Self.Label2.TabIndex := 4;Self.Label2.Text := 'A:';//// Labels//Self.Label3.Location := System.Drawing.Point.Create(24, 83);Self.Label3.Name := 'Label3';Self.Label3.Size := System.Drawing.Size.Create(16, 16);Self.Label3.Tablndex .:= 5;Self.Label3.Text := 'B: 1 ;//// Label 4//Self.Label4.Location := System.Drawing.Point.Create(24, 111);Self.Label4.Name := 'Label4';Self.Label4.Size := System.Drawing.Size.Create(16, 16);Self.Label4.Tablndex := 6;Self.Label4.Text := 'C: 1 ;//// Label5//Self.Label5.BorderStyle :=System.Windows.Forms.BorderStyle.Fixed3D;Self.Label5.Location := System.Drawing.Point.Create(104, 48);Self.Label5.Name := 'Label5';Self.Label5.Size := System.Drawing.Size.Create(120, 80);Self.Label5.Tablndex := 7;//// Buttonl//Self.Buttonl.Location := System.Drawing.Point.Create(240, 48);Self.Buttonl.Name := 'Buttonl';Self.Buttonl.Size := System.Drawing.Size.Create(120, 32);Self.Buttonl.Tablndex := 8;ГЛАВА 2 • Создаем первые проекты в Borland Delphi 2005Self.Buttonl.Text := 'вычислить';Include(Self.Buttonl.Click, Self.Buttonl_Click);//// Button2//•Self.Button2.Location := System.Drawing.Point.Create(240, 96);Self.Button2.Name := 'Button2';Self.Button2.Size := System.Drawing.Size.Create(120, 32);Self.Button2.TabIndex := 9,Self .Button2 .Text .:= 'завершение работы';Include(Self.Button2.Click, Self.Button2_Click);//// TWinForml//Self.AutoScaleBaseSize : = System.Drawing.Size.Create(5, 13);Self.ClientSize := System.Drawing.Size.Create(384, 150);Self.Controls.Add(Self.Button2) ;Self.Controls.Add(Self.Buttonl) ;Self.Controls.Add(Self.Label5) ;Self.Controls.Add(Self.Label4);Self.Controls.Add(Self.Label3);Self.Controls.Add(Self.Label2);Self.Controls.Add(Self.Labell);Self.Controls.Add(Self.TextBox3);Self.Controls.Add(Self.TextBox2); •Self.Controls.Add(Self.TextBoxl);Self.FormBorderStyle :•System.Windows.Forms.FormBorderStyle.FixedSingle;Self.MaximizeBox := False;Self.Name :• 'TWinForml';Sel'f .StartPosition : =System.Windows.Forms.FormStartPosition.CenterScreen;;Self.Text := 'Вычисление корней квадратного уравнения';Self.ResumeLayout(False);end ;{$ENDREGION}procedure TWinForml.Dispose(Disposing: Boolean);beginif Disposing thenbeginif Components <> nil thenComponents.Dispose();end;Создаем первый проект для Microsoft .IUET Frameworkinherited Dispose(Disposing);end;constructor TWinForml.Create;begininherited Create;InitializeComponent;end ;procedure TWinForml.Buttonl_Click(sender: System.Object;e: System.EventArgs);var A,B,C:single;D:real;XI,X2:real;begin// Ввод исходных данных.A := System.Convert.ToSingle(TextBoxl.Text);В := System.Convert.ToSingle(TextBox2.Text);С := System.Convert.ToSingle(TextBox3.Text);// Вычисление дискриминанта.D := B*B-4*A*C;if D<0 then// Если дискриминант отрицателен, то выводим сообщение// о том, что уравнение не имеет корней.beginLabel5.Text := 'Уравнение не имеет действительных корней';end// Если дискриминант больше или равен 0, то// вычисляем корни уравнения.elsebeginXI := (-B-sqrt(D))/(2*A);Х2 := (-B+sqrt(D))/(2*А);// Выводим рассчитанные значения корней.Label5.Text := 'XI = '+Х1.ToString+#13+'X2 = '+Х2.ToString;end;end;procedure TWinForml.Button2_Click(sender: System.Object;e: System.EventArgs);begin// Завершаем работу программы.Close;end;end..iГЛАВА 2 Y Создаем первые проекты в Borland Delphi 2005Модуль формы можно условно разделить на две части - раздел интерфейсаи раздел реализации.Секция интерфейса (начинается со служебного слова i n t e r f a c e ) содержитавтоматически сформированное Delphi-объявление типа формы.
Она такжесодержит описание компонентов и процедур (но не сами процедуры!)обработки событий. Как формируется эта секция? Во время создания нашейформы мы переносили на нее некоторые компоненты. При этом«перетаскивание» компонента на форме приводит к тому, что среда Delphi самаописывает компонент, который вы перетащили на форму, и устанавливает теначальные свойства, которые вы прописывали в окне Object Inspector дляданного компонента. Когда программирование было не настолько сильноразвито, то программисту приходилось писать все эти строки вручную, что,естественно, сказывалось на времени разработки программ.
Поэтому вы,конечно, можете вносить изменения, например, в свойства компонентовпрямо в окне редактора кода, но делать это гораздо проще и удобнее через окноObject Inspecor.Секция реализации начинается со служебного слова implementation. Онасодержит объявление локальных процедур и функций, в том числе и процедуробработки событий.
Как видите, программисту отводится в основном рольразработки внешнего вида программы, а также написание процедур обработкисобытий. Всю остальную рутинную работу выполняет среда программированияDelphi. Согласитесь, что такой подход удобен.В принципе, существуют еще две секции - секция инициализации ифинализации модуля. В нашем примере они отсутствуют.