Delphi 簡易電卓 ソースコード ― 2022年08月25日 15:44
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Vcl.Touch.Keyboard, Vcl.Buttons, MSScriptControl_TLB, System.ImageList,
Vcl.ImgList;
type
TForm1 = class(TForm)
TouchKeyboard1: TTouchKeyboard;
Memo1: TMemo;
Edit1: TEdit;
sbtnClia: TSpeedButton;
sbtnKeisan: TSpeedButton;
Edit2: TEdit;
sbtnMemory: TSpeedButton;
sbtnRecal: TSpeedButton;
sbtnKakoST: TSpeedButton;
ImageList1: TImageList;
sbtnKakoEN: TSpeedButton;
sbtnKyaret: TSpeedButton;
sbtnHidari: TSpeedButton;
sbtnMigi: TSpeedButton;
sbtnBS: TSpeedButton;
sbtnSin: TSpeedButton;
sbtnCos: TSpeedButton;
sbtnTan: TSpeedButton;
sbtnPai: TSpeedButton;
sbtnE: TSpeedButton;
sbtnRuto: TSpeedButton;
sbtnKuhak: TSpeedButton;
sbtnGyakusu: TSpeedButton;
procedure FormShow(Sender: TObject);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure clia;
procedure sbtnCliaClick(Sender: TObject);
procedure sbtnKeisanClick(Sender: TObject);
procedure sbtnMemoryClick(Sender: TObject);
procedure sbtnRecalClick(Sender: TObject);
function MSsisoku(siki:string):string;
procedure sbtnKakoSTClick(Sender: TObject);
procedure sbtnKakoENClick(Sender: TObject);
procedure sbtnKyaretClick(Sender: TObject);
procedure sbtnMigiClick(Sender: TObject);
procedure sbtnHidariClick(Sender: TObject);
procedure sbtnBSClick(Sender: TObject);
function doToRad(atai:string):string;
procedure sbtnSinClick(Sender: TObject);
procedure sbtnCosClick(Sender: TObject);
procedure sbtnTanClick(Sender: TObject);
procedure sbtnPaiClick(Sender: TObject);
procedure sbtnEClick(Sender: TObject);
procedure sbtnRutoClick(Sender: TObject);
procedure sbtnKuhakClick(Sender: TObject);
procedure sbtnGyakusuClick(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
const
PAI = '3.141592653';
RADD = '0.01745329252';
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.doToRad(atai: string): string;
begin
var sdmy:string;
sdmy := atai;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
clia;
end;
procedure TForm1.clia; //答えの欄と計算式の欄をクリアする
begin
edit1.text := '';
memo1.Lines.Clear;
memo1.SetFocus;
end;//clia end
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if ord(key) = VK_RETURN then begin key := #0;{ビープ音を消す}
edit1.text := MSsisoku(memo1.Text); //計算する
end;
end;
function TForm1.MSsisoku(siki: string): string; //'Microsoft Script Control 1.0
begin
var msc: TScriptControl;
msc := TScriptControl.Create( Self );
msc.Language := 'VBScript';
//MOTOlabel1.caption := VarToStr( msc.Eval( 'sin(0.2) + log(20)' ) ) ;
try
//label1.caption := varToStr(msc.Eval('(1.5+2)/-2'));
result := varToStr(msc.Eval(siki));
except
result := '計算式が不正です';
end;
msc.Free;
end;
procedure TForm1.sbtnCliaClick(Sender: TObject); //クリア
begin
clia;
end;
procedure TForm1.sbtnKeisanClick(Sender: TObject); //計算
begin
edit1.text := MSsisoku(memo1.Text);
memo1.SetFocus;
end;
procedure TForm1.sbtnKuhakClick(Sender: TObject);
begin
memo1.SelText := ' ';
end;
procedure TForm1.sbtnBSClick(Sender: TObject);
begin
SetForegroundWindow(hwnd(memo1.Handle));
keybd_event(VK_BACK, 0, 0, 0); // Bsキー
keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0);
end;
procedure TForm1.sbtnEClick(Sender: TObject);
begin
memo1.SelText := 'E';
end;
procedure TForm1.sbtnGyakusuClick(Sender: TObject);
begin
memo1.SelText := '1/';
end;
procedure TForm1.sbtnMigiClick(Sender: TObject);
begin
memo1.selstart := memo1.selstart + 1;
end;
procedure TForm1.sbtnPaiClick(Sender: TObject);
begin
memo1.SelText := '3.141592653';
end;
procedure TForm1.sbtnHidariClick(Sender: TObject);
begin
memo1.selstart := memo1.selstart - 1;
end;
procedure TForm1.sbtnKakoENClick(Sender: TObject);
begin
memo1.SelText := ')';
end;
procedure TForm1.sbtnKakoSTClick(Sender: TObject);
begin
memo1.SelText := '(';
end;
procedure TForm1.sbtnKyaretClick(Sender: TObject);
begin
memo1.SelText := '^';
end;
procedure TForm1.sbtnMemoryClick(Sender: TObject); //答えの値を記憶させる
begin
Edit2.text := Edit1.Text;
memo1.SetFocus;
end;
procedure TForm1.sbtnRecalClick(Sender: TObject); //記憶値を数式画面へ挿入する
begin
memo1.SelText := Edit2.text;
end;
procedure TForm1.sbtnRutoClick(Sender: TObject);
begin
memo1.SelText := 'sqr()';
memo1.selstart := memo1.selstart - 1;
end;
procedure TForm1.sbtnSinClick(Sender: TObject);
begin
memo1.SelText := 'sin(0.01745329252*)';
memo1.selstart := memo1.selstart - 1;
end;
procedure TForm1.sbtnCosClick(Sender: TObject);
begin
memo1.SelText := 'cos(0.01745329252*)';
memo1.selstart := memo1.selstart - 1;
end;
procedure TForm1.sbtnTanClick(Sender: TObject);
begin
memo1.SelText := 'tan(0.01745329252*)';
memo1.selstart := memo1.selstart - 1;
end;
end.
コメント
トラックバック
このエントリのトラックバックURL: http://tukasa.asablo.jp/blog/2022/08/25/9520668/tb