unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Logo: TImage;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton4: TSpeedButton;
Edit2: TEdit;
SpeedButton16: TSpeedButton;
SpeedButton20: TSpeedButton;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
SpeedButton21: TSpeedButton;
Label1: TLabel;
Label2: TLabel;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
SpeedButton24: TSpeedButton;
SpeedButton25: TSpeedButton;
background: TImage;
SpeedButton26: TSpeedButton;
procedure SpeedButtonDeystvieClick(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure SpeedButton21Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure SpeedButton24Click(Sender: TObject);
procedure SpeedButton25Click(Sender: TObject);
procedure SpeedButton26Click(Sender: TObject);
procedure SpeedButtonNumberClick(Sender: TObject);
procedure SpeedButtonRavnoClick(Sender: TObject);
procedure SpeedButtonRazdelitelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
input,input2,output,prozent:real;
znachenie:string;
deystvie:boolean=false;
razdelitel:boolean=false;
ravno:boolean=false;
implementation
{$R *.dfm}
function ShellExecute (hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): LongWord; stdcall; external 'Shell32.dll' name 'ShellExecuteA';
procedure TForm1.SpeedButtonNumberClick(Sender: TObject);
begin
if edit2.Text='0' then edit2.Text:='';
if deystvie=true then
begin
edit2.Text:='';
deystvie:=false;
end;
if ravno=true then
begin
edit2.Text:='';
ravno:=false;
end;
edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption;
{Если стоит ноль, то он удаляется;
Если действие нажато то удаляется всё поле и действие=фалс;
Edit2.Text:=Edit2.Text+текст на клавише;
}
end;
procedure TForm1.SpeedButtonDeystvieClick(Sender: TObject);
begin
if deystvie=false then
begin
input:=strtofloat(edit2.Text);
znachenie:=(Sender as TSpeedButton).Caption;
deystvie:=true;
end
else
begin
input:=strtofloat(edit2.Text);
znachenie:=(Sender as TSpeedButton).Caption;
end;
razdelitel:=false;
{Если действие=фалс то
значение=текст на клавише;
действие=тру;
Иначе
инпут=вещ. от edit2.Text;
значение = текст на клавише;
}
end;
procedure TForm1.SpeedButtonRavnoClick(Sender: TObject);
begin
input2:=strtofloat(edit2.Text);
if znachenie='+' then output:=input+input2;
if znachenie='-' then output:=input-input2;
if znachenie='*' then output:=input*input2;
if znachenie='/' then output:=input/input2;
if znachenie='%' then output:=input*input2/100;
if znachenie='^' then
begin
input:=output;
if input2=0 then
begin
edit2.Text:='0';
end;
while input2>1 do
begin
output:=output*input;
input2:=input2-1;
end;
{Возведение в степень}
end;
edit2.Text:=floattostr(output);
ravno:=true;
{input2:=вещ. от edit2.Text;
в зависимости от значения присваивается output;
output выводится в edit2.Text;
}
end;
procedure TForm1.SpeedButtonRazdelitelClick(Sender: TObject);
begin
if razdelitel=false then
begin
edit2.Text:=edit2.Text+(Sender as TSpeedButton).Caption;
razdelitel:=true;
end;
{Проверка на наличие запятой в цифре}
end;
procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
input:=strtofloat(edit2.text);
output:=sqrt(input);
edit2.Text:=floattostr(output);
{извлечение квадратного корня}
end;
procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
Edit2.Text:='0';
Edit4.Text:='0';
Edit5.Text:='0';
Edit6.Text:='0';
Edit7.Text:='0';
Edit8.Text:='0';
{CE}
end;
procedure TForm1.SpeedButton21Click(Sender: TObject);
var
a,b,c,x1,x2,d,p:real;
begin
a:=strtofloat(edit4.Text);
b:=strtofloat(edit6.Text);
c:=strtofloat(edit5.Text);
if a=0 then
begin
ShowMessage('a=0. Неверноное значение a');
end;
d:=(b*b)-(4*a*c);
if d<0 then
begin
ShowMessage('Уравнение не имеет корней');
end;
p:=sqrt(d);
x1:=(-b+p)/(2*a);
x2:=(-b-p)/(2*a);
edit8.Text:='X1='+floattostr(x1);
edit7.Text:='X2='+floattostr(x2);
{Решение кв.уранения}
end;
procedure TForm1.SpeedButton26Click(Sender: TObject);
begin
ShellExecute(0, 'open', 'Calc by UnrealFire.chm','','', sw_show);
end;
{Ниже синус, косинус, тангенс и радианы из угла}
procedure TForm1.SpeedButton22Click(Sender: TObject);
var
g,r,s:real;
s2:string;
begin
g:=strtofloat(edit2.Text);
if (g>360) or (g=360) then
begin
g:=g-360;
end;
r:=PI*g/180;
s:=sin(r);
s2:=floattostr(s);
if (g=0) or (g=180) then
begin
s2:='0';
end;
if (g=90) or (g=270) then
begin
s2:='1';
end;
if (g=30) or (g=210) then
begin
s2:='1/2';
end;
if (g=45) or (g=225) then
begin
s2:='(Квадратный корень от 2)/2';
end;
if (g=60) or (g=240) then
begin
s2:='(Квадратный корень от 3)/2';
end;
edit2.Text:=s2;
end;
procedure TForm1.SpeedButton23Click(Sender: TObject);
var
g,r,c:real;
c2:string;
begin
g:=strtofloat(edit2.Text);
if (g>360) or (g=360) then
begin
g:=g-360;
end;
r:=PI*g/180;
c:=cos(r);
c2:=floattostr(c);
if (g=0) or (g=180) then
begin
c2:='1';
end;
if (g=90) or (g=270) then
begin
c2:='0';
end;
if (g=30) or (g=210) then
begin
c2:='(Квадратный корень от 3)/2';
end;
if (g=45) or (g=225) then
begin
c2:='(Квадратный корень от 2)/2';
end;
if (g=60) or (g=240) then
begin
c2:='1/2';
end;
edit2.Text:=c2;
end;
procedure TForm1.SpeedButton24Click(Sender: TObject);
var
g,r,t,c,s:real;
t2:string;
begin
g:=strtofloat(edit2.Text);
if (g>360) or (g=360) then
begin
g:=g-360;
end;
r:=PI*g/180;
c:=Cos(r);
s:=Sin(r);
t:=s/c;
t2:=floattostr(t);
if (g=0) or (g=180) then
begin
t2:='0';
end;
if (g=90) or (g=270) then
begin
t2:='Не определён';
end;
if (g=30) or (g=210) then
begin
t2:='(Квадратный корень от 3)/3';
end;
if (g=45) or (g=225) then
begin
t2:='1';
end;
if (g=60) or (g=240) then
begin
t2:='Квадратный корень от 3';
end;
edit2.Text:=t2;
end;
procedure TForm1.SpeedButton25Click(Sender: TObject);
var
g,r:real;
begin
g:=strtofloat(edit2.Text);
r:=g*PI/180;
edit2.Text:=floattostr(r);
end;
end.