6. Бондаренко, М.А.Программирование в Delphi — Харьков : б.н., 2005.
7. Маркушевич А.И.,Замечательные кривые — М., 1978 г., 48 с.: ил.
8. Бобровский С.Delphi 5 — М.: Питер, 2002. — 346 с.: ил.
9. Гаевский А.Разработка программных приложений на Delphi 6 – М.: Киев, 2000. — 457 с.
10. Коцюбинский А.О., Грошев С.В.Язык программирования Delphi 5 — М.: «Издательство Триумф», 1999. — 288 с.
11. Леонтьев В.Delphi 5— М.: Москва «Олма-Пресс», 1999. — 446 с.
12. Ильина Т.А.Программирование на Delphi 6 — М.: Питер, 2000. — 318 с.
13. Шапошников И.Delphi 5— М.: Санкт-Петербург, 2001. — 203 с.
14. Інтернет-ресурс: http://beluch.ru/progr/100comp/index.htm (онлайн довідник о компонентах Delphi).
Головна форма:
unit LSpir;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi, Buttons, ExtCtrls, Menus, ButtonComps,
ComCtrls;
type
TformMain = class(TForm)
PaintBox1: TPaintBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
MainMenu1: TMainMenu;
j1: TMenuItem;
N1: TMenuItem;
GroupBox1: TGroupBox;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N9: TMenuItem;
ImageButton3: TImageButton;
GroupBox2: TGroupBox;
ImageButton1: TImageButton;
ImageButton2: TImageButton;
CheckBox1: TCheckBox;
GroupBox3: TGroupBox;
TrackBar1: TTrackBar;
Label4: TLabel;
CheckBoxPlus: TCheckBox;
CheckBoxMin: TCheckBox;
procedure FormPaint(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
X,Y: Integer);
procedure N5Click(Sender: TObject);
procedure ImageButton1Click(Sender: TObject);
procedure ImageButton2Click(Sender: TObject);
procedure ImageButton3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N2Click(Sender: TObject);
procedure CheckBoxPlusClick(Sender: TObject);
procedure CheckBoxMinClick(Sender: TObject);
private
procedure Line(x1,y1,x2,y2: integer; const dep: byte = 1);
public
{ Public declarations }
end;
procedure Delay(ms : longint);
var
formMain: TformMain;
centerX, centerY, dp: integer;
spiral: boolean;
z:integer;
const
xmin = -8; xmax = 6;
ymin = -6; ymax = 8;
implementation
uses LSpir_zas, LSpir_math, LSpir_about, LSpir_Help;
{$R *.dfm}
//Задержка
procedure Delay(ms : longint);
var
t1 : longint;
begin
t1:=GetTickCount;
while (GetTickCount - t1) < ms do Application.ProcessMessages;
end;
//Фоновый рисунок
procedure TformMain.FormPaint(Sender: TObject);
var
x,y: integer;
pic: TGraphic;
begin
pic:=TBitmap.Create;
pic.LoadFromFile('background.bmp');
x:=0; y:=0;
while y < Height do
begin
while x < Width do
begin
Canvas.Draw(x,y,pic);
x:=x+pic.Width;
end;
x:=0;
y:=y+pic.Height;
end;
pic.Free;
end;
//Построение линии
procedure TformMain.Line(x1, y1, x2, y2: integer; const dep: byte);
begin
with PaintBox1.Canvas do
begin
Pen.Width:=dep;
MoveTo(centerX+(x1*dp),centerY-(y1*dp));
LineTo(centerX+(x2*dp),centerY-(y2*dp));
end;
nd;
//Трансляция координат
procedure TformMain.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
X,Y: Integer);
begin
Label4.Caption:=Format('X = %d, Y = %d',[X,Y]);
end;
//Построение координатной плоскости и спирали
procedure TformMain.PaintBox1Paint(Sender: TObject);
var
x,y,m,i,n: integer;
w,h,p0,p1,p2: integer;
fi,p,a,q,k: real;
begin
w:=PaintBox1.Width;
h:=PaintBox1.Height;
dp:=TrackBar1.Position;
with PaintBox1.Canvas do
begin
Pen.Width:=3;
Pen.Color:=clBlack;
Brush.Color:=clWhite;
Rectangle(0,0,w,h);
//центр координатной оси
centerX:=w div 2;
centerY:=h div 2;
//черчение сетки
if CheckBox1.Checked then
begin
for i:=0 to 36 do
begin
Line(-18, 18-i, 18, 18-i);
Line(18-i, 18, 18-i, -18);
end;
end;
//оцифровка
i:=0;
m:=0;
repeat
x:=xmin+m;
y:=ymin+m;
if (x <> 0) and (x <= xmax) then TextOut(centerX+(xmin*dp)+i+1, centerY, IntToStr(x));
if (y <> 0) and (y <= ymax) then TextOut(centerX+5, centerY-(ymin*dp)-i-5, IntToStr(y));
i:=i+dp;
m:=m+1;
until i > w;
//построение координатной оси
Pen.Color:=clRed;
Line(xmin, 0, xmax, 0, 2); //координатная ось X
Line(0, ymin, 0, ymax, 2); //координатная ось Y
//подписи осей
TextOut(centerX+(xmax*dp)+10,centerY-15,'X');
TextOut(centerX-14,centerY-(ymax*dp)-14,'Y');
//построение спирали
if z=1 then
begin
n:=StrToInt(Edit1.Text);
p0:=StrToInt(Edit2.Text)*dp; //введённое значение полярного радиуса
//умножаем на шаг сетки, для того чтобы
//данный радиус строился в соответствии с
//координатной плоскосью, а не по пикселям
q:=StrToFloat(Edit3.Text);
a:=1;
while a < 360 * n do //расчитываем радиус, увеличивая угол
begin //от 0 до 360 градусов
fi:=a*(pi/180);//расчитываем угол fi
k:=(ln(q))/(2*pi);
p:=p0*exp(k*fi);
p1:=centerX+trunc(p*cos(fi));
p2:=centerY-trunc(p*sin(fi));
PaintBox1.Canvas.Pixels[p1,p2]:=clBlue;
a:=a+0.1; //шаг
end;
end;
end;
end;
//Цифровая маска для q
procedure TformMain.Edit3KeyPress(Sender: TObject; var Key: Char);
var
vrPos, vrLength, vrSelStart: byte;
const
I: byte = 1; //I+1 = количество знаков после запятой (в данном случае - 2 знака)
begin
with Sender as TEdit do
begin
vrLength:= Length(Text); //определяем длину текста
vrPos:= Pos(',', Text); //проверяем наличие запятой
vrSelStart:= SelStart; //определяем положение курсора
end;
case Key of
'0'..'9':
begin
//проверяем положение курсора и количество знаков после запятой
if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
Key := #0; //"погасить" клавишу
end;
',', '.':
begin
//если запятая уже есть, если запятую пытаются поставить перед
//числом или никаких цифр в поле ввода еще нет
if (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then
Key := #0 //"погасить" клавишу
else
Key:= #44; //всегда заменять точку на запятую
end;
#8: ; //позволить удаление знаков клавишей 'Back Space'
else
Key:= #0; //"погасить" все остальные клавиши
end;
end;
//Цифровая маска для p0
procedure TformMain.Edit2KeyPress(Sender: TObject; var Key: Char);
var
vrP0, vrLength, vrSelStart: byte;
begin
with Sender as TEdit do
begin
vrLength:= Length(Text); //определяем длину текста
vrP0:= pos('',Text); //проверяем наличие символов
vrSelStart:= SelStart; //определяем положение курсора
end;
case Key of
'1'..'6':
begin
//
if (vrP0 > 6) then
Key := #0; //"погасить" клавишу
end;
#8: ; //позволить удаление знаков клавишей 'Back Space'
else
Key := #0; //"погасить" все остальные клавиши
end;
end;
//Цифровая маска для n
procedure TformMain.Edit1KeyPress(Sender: TObject; var Key: Char);
var
vrP0, vrLength, vrSelStart: byte;
begin
with Sender as TEdit do
begin
vrLength:= Length(Text); //определяем длину текста
vrP0:= pos('',Text); //проверяем наличие запятой
vrSelStart:= SelStart; //определяем положение курсора
end;
case Key of
'1'..'9':
begin
//
if (vrP0 > 9) then
Key := #0; //"погасить" клавишу
end;
#8: ; //позволить удаление знаков клавишей 'Back Space'
else
Key := #0; //"погасить" все остальные клавиши
end;
end;
//Показать спираль
procedure TformMain.ImageButton1Click(Sender: TObject);
begin
z:=1;
PaintBox1.Repaint;
end;
//Удалить спираль
procedure TformMain.ImageButton2Click(Sender: TObject);
begin
z:=0;
PaintBox1.Repaint;
end;
//Показать/Скрыть сетку
procedure TformMain.CheckBox1Click(Sender: TObject);
begin
PaintBox1.Repaint;
end;
//Выделение ползунка
procedure TformMain.TrackBar1Change(Sender: TObject);
begin
Trackbar1.SelStart:=Trackbar1.Min;
Trackbar1.SelEnd:=Trackbar1.Position;
PaintBox1.Repaint;
end;
//Вызов консольного приложения
procedure TformMain.N5Click(Sender: TObject);
begin
ShellExecute(formMain.Handle, nil, PChar('LSpir_cons.exe'), nil, nil, SW_ShowNormal);
end;
//'Аналитическое решение'
procedure TformMain.N4Click(Sender: TObject);
begin
formMath_1.ShowModal;
end;
//'О программе'
procedure TformMain.N9Click(Sender: TObject);
begin
formAbout.Show;
end;
//Закрытие программы
procedure TformMain.ImageButton3Click(Sender: TObject);
begin
close;
end;
//Показать справку
procedure TformMain.N2Click(Sender: TObject);
begin
formHelp.Show;
end;
procedure TformMain.CheckBoxPlusClick(Sender: TObject);
begin
if CheckBoxPlus.Checked then
begin
TrackBar1.Max:=50;
TrackBar1.Min:=23;
TrackBar1.Position:=23;
CheckBoxMin.Checked:=False;
end;
end;
procedure TformMain.CheckBoxMinClick(Sender: TObject);
begin
if CheckBoxMin.Checked then
begin
TrackBar1.Max:=23;
TrackBar1.Min:=13;
TrackBar1.Position:=23;
CheckBoxPlus.Checked:=False;
end;
end;
end.
Форма заставки:
unit LSpir_zas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg;
type
TformVignette = class(TForm)
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
formVignette: TformVignette;
implementation
{$R *.dfm}
end.
Форма «Опрограмме»:
unit LSpir_about;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, jpeg, ExtCtrls, StdCtrls;
type
TformAbout = class(TForm)
Image1: TImage;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Bevel1: TBevel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
formAbout: TformAbout;
implementation
{$R *.dfm}
end.
Форма «Аналитическое решение»(1):
unit LSpir_math;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, ButtonComps, OleCtnrs;
type
TformMath_1 = class(TForm)
ImageButton1: TImageButton;
ImageButton3: TImageButton;
OleContainer1: TOleContainer;
OleContainer2: TOleContainer;
procedure ImageButton3Click(Sender: TObject);
procedure ImageButton1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formMath_1: TformMath_1;
implementation
uses LSpir_math_2;
{$R *.dfm}
procedure TformMath_1.ImageButton3Click(Sender: TObject);
begin
close;
end;
procedure TformMath_1.ImageButton1Click(Sender: TObject);
begin
formMath_1.Hide;
formMath_1.Close;
formMath_2.Show;
end;
procedure TformMath_1.FormPaint(Sender: TObject);
var
x,y: integer;
pic: TGraphic;
begin
pic:=TBitmap.Create;
pic.LoadFromFile('background_h.bmp');
x:=0; y:=0;
while y < Height do
begin
while x < Width do
begin
Canvas.Draw(x,y,pic);
x:=x+pic.Width;
end;
x:=0;
y:=y+pic.Height;
end;
pic.Free;
end;
end.
Форма «Аналитическое решение»(2):
unit LSpir_math_2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ButtonComps, OleCtnrs, jpeg, ExtCtrls;
type
TformMath_2 = class(TForm)
ImageButton2: TImageButton;
OleContainer1: TOleContainer;
Image1: TImage;
ImageButton1: TImageButton;
procedure ImageButton3Click(Sender: TObject);
procedure ImageButton2Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formMath_2: TformMath_2;
implementation
uses LSpir_math;
{$R *.dfm}
procedure TformMath_2.ImageButton3Click(Sender: TObject);
begin
close;
end;
procedure TformMath_2.ImageButton2Click(Sender: TObject);
begin
formMath_2.Hide;
formMath_2.Close;
formMath_1.Show;
end;
procedure TformMath_2.FormPaint(Sender: TObject);
var
x,y: integer;
pic: TGraphic;
begin
pic:=TBitmap.Create;
pic.LoadFromFile('background_h.bmp');
x:=0; y:=0;
while y < Height do
begin
while x < Width do
begin
Canvas.Draw(x,y,pic);
x:=x+pic.Width;
end;
x:=0;
y:=y+pic.Height;
end;
pic.Free;
end;
end.
Форма довідки:
unit LSpir_help;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ButtonComps;
type
TformHelp = class(TForm)
Image1: TImage;
Image2: TImage;