Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии 


Перечень основных компонент, необходимых для выполнения работы




TFORM, TLABEL, TEDIT, TSCROLLBAR, MessageDlg, MessageBox

 

Пример разработки приложения с минимальной функциональностью.

 

Ниже приведена программа, обладающая следующей функцио­нальностью. Имеется меню, содержащее пункты – Моделирование и О программе

Подпункты меню Моделирование позволяют построить ряд стандартных графических примитивов, нарисовать траекторию камня, брошенного под углом к горизонту. Диалоговое окно О программе реализовано как отдельный модуль (диалог) и (вследствие его простоты) в методичке не показано, но доступно на диске.

 

unit L2_4;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, ComCtrls, ExtCtrls;

Const

SizeN=50;

dt=0.05;

Type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1,N2,N3,N4,N5,N6,N7,N8: TMenuItem;

Timer1: TTimer;

Button1,Button2 ,Button3:: TButton;

Image1,Image2, Image3: TImage;

public

procedure N8Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean);

procedure Timer1Timer(Sender: TObject);

procedure Button1Click(Sender: TObject);

end;{class}

Var

Form1: TForm1;

PointsArray: array[1..SizeN] of TPoint;

fi:real;

vx,vy:real;

xx,yy,SizeYY:integer;

t:real;

Implementation

uses Unit2_4_2;

{$R *.dfm}

 

{Обработка события «О программе»}

procedure TForm1.N8Click(Sender: TObject);

begin

OKRightDlg.ShowModal;

end; {Proc}

 

{Обработка события «пункт меню Выход»}

procedure TForm1.N6Click(Sender: TObject);

begin

close;

end;{Proc}

 

{Обработка события «Моделирование-прямые»}

procedure TForm1.N2Click(Sender: TObject);

var

i:integer; sizeX,sizeY:integer;

begin

Image1.visible:=true;

sizeX:=Image1.BoundsRect.Right-Image1.BoundsRect.Left;

sizeY:=Image1.BoundsRect.Bottom – Image1.BoundsRect.Top;

randomize;

for i:=1 to SizeN do begin

PointsArray[i].X:=random(sizeX); PointsArray[i].Y:=random(sizeY);

end;

Image1.Canvas.MoveTo(PointsArray[1].X,PointsArray[1].Y);

for i:=2 to SizeN do begin

Image1.Canvas.Lineto(PointsArray[i].X,PointsArray[i].Y);

end;

Button2.Visible:=true;

end; {Proc}

 

{Обработка события «Закончить рисование линий»}

procedure TForm1.Button2Click(Sender: TObject);

begin

Image1.visible:=false; Button2.Visible:=false;

end; {Proc}

 

{Обработка события «Моделирование - эллипсы»}

procedure TForm1.N3Click(Sender: TObject);

var

i:integer;

sizeX,sizeY:integer;

begin

Image2.visible:=true;

sizeX:=Image2.BoundsRect.Right-Image2.BoundsRect.Left;

sizeY:=Image2.BoundsRect.Bottom-Image2.BoundsRect.Top;

randomize;

for i:=1 to SizeN do begin

PointsArray[i].X:=random(sizeX); PointsArray[i].Y:=random(sizeY);

end;

for i:=1 to SizeN do begin

Image2.Canvas. Ellipse(PointsArray[i].X,PointsArray[i].Y,

PointsArray[i].Y,PointsArray[i].X);

end;

Button3.Visible:=true;

end; {Proc}

 

{Обработка события «Закончить рисование эллипсов»}

procedure TForm1.Button3Click(Sender: TObject);

begin

Image2.visible:=false; Button3.Visible:=false;

end; {Proc}

 

{Обработка события пункт меню «Камень»}

procedure TForm1.N4Click(Sender: TObject);

var

i:integer;

sizeX,sizeY:integer;

begin

Image3.visible:=true; Button1.visible:=true;

 

sizeX:=Image3.BoundsRect.Right-Image3.BoundsRect.Left;

sizeY:=Image3.BoundsRect.Bottom-Image3.BoundsRect.Top;

sizeYY:=Image3.BoundsRect.Bottom – Image3.BoundsRect.Top;

 

vx:=round(50/1.4); vy:=round(50/1.4); fi:=arctan(vy/vx);

xx:=0; yy:=sizeY; t:=0;

Image3.Canvas.MoveTo(0,SizeY);

Image3.Canvas.Lineto(0+round(50*Cos(fi)), SizeY-round(50*Sin(fi)));

Image3.Canvas.MoveTo(0,SizeY);

Image3.Canvas.Pen.Color:=clBlue;

end; {Proc}

 

{Обработка события «Угол наклона»}

procedure TForm1.UpDown1Changing(Sender: TObject;

var AllowChange: Boolean);

begin

fi:=arctan(vy/vx);

end; {Proc}

 

{Обработка события «Таймер»}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

t:=t+dt;

xx:=round(xx+vx*dt); vy:=vy-10*dt; yy:=round(yy-vy*dt);

Image3.Canvas.LineTo(xx,yy);

if(yy>sizeYY) then begin

Timer1.enabled:=false; button1.Caption:='STOP';

end;

end; {Proc}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if(button1.caption='START') then begin

Timer1.Enabled:=true;

end else begin

button1.Caption:='START'; button1.Visible:=false;

Timer1.enabled:=false; Image3.Hide;

end;

end; {Proc}

end{Unit}.

 

Примерный перечень заданий для выполнения студентами

 

Построить графики и численно найти нули следующих функций (координатные оси должны быть нарисованы и подписаны)

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15. Найти численное значение числа π, используя следующий алгоритм: строится круг единичного радиусас центром в начале координат, вокруг него описывается квадрат. В пределах построенного квадрата случайным образом ставятся точки. При этом

,

где N – общее число точек, m – число точек, попавших в круг, Skp – площадь круга, Skb – площадь квадрата. Изобразить решение графически.

 

Вопросы для самопроверки

 

1. Элемент управления UpDown для выбора угла бросания не работает, как его настроить?

2. Камень в примере летит «как то не так…», что надо сделать, чтобы действительно нарисовать параболу?

3. Почему затирается текст «Рисуем линии» при действиях с окном формы, а область Image - нет?

4. На каких еще видимых элементах можно рисовать?

5.Как правильно выводить на форму массивы точек, чтобы они не затирались при перерисовке окна?


ЛАБОРАТОРНАЯ РАБОТА Л-2.5

 

ООП, классы, методы, наследование

 

Целью пятой лабораторной работы является освоение концепций наследования, полиморфизма и виртуальных правил на базе простых иерархий графических объектов. При этом используются процедуры работы с графикой стандартных классов системы Delphi, порожденных от TСontrol, осваивается материал, связанный со сложными (вектор­ными свойствами) и обработка клавиатурных событий.

 

Материал Уч. Д1, необходимый для написания работы, –





Рекомендуемые страницы:


Читайте также:

  1. B. Основной кодекс практики для всех обучающих тренеров
  2. Cyanocobalamin, крайне важного вещества для здоровья тела. Для многих
  3. D. НОВЫЕ ТЕХНОЛОГИИ ДЛЯ ОБЕСПЕЧЕНИЯ ХРАНЕНИЯ И ДОСТУПА К ИНФОРМЦИИ О ПРОМЫШЛЕННОЙ СОБСТВЕННОСТИ
  4. E. Лица, участвующие в договоре, для регулирования своих взаимоотношений могут установить правила, отличающиеся от правил предусмотренных диспозитивными нормами права.
  5. I. АНАЛИЗ И ПОДГОТОВКА ПРОДОЛЬНОГО ПРОФИЛЯ ПУТИ ДЛЯ ВЫПОЛНЕНИЯ ТЯГОВЫХ РАСЧЕТОВ
  6. I.4. Библиографический поиск необходимых литературных источников
  7. II. Организация выполнения курсовой работы
  8. III. Приёмы приготовления начинок и фаршей для тестяных блюд: пирогов, пельменей, вареников, пирожков
  9. III. Узлы для связывания двух тросов
  10. IX. Узлы для рыболовных снастей
  11. L-карнитин для похудения: эффективность, свойства и дозировки
  12. Microoft выпустила новое оборудование для компьютеров


Последнее изменение этой страницы: 2016-03-17; Просмотров: 384; Нарушение авторского права страницы


lektsia.com 2007 - 2020 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.) Главная | Обратная связь