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

<< 2022/08
01 02 03 04 05 06
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

このブログについて

ネットで見つけたいろいろ雑記

バックナンバー

RSS