📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzStatus, ImgList, RzButton, RzPanel, ExtCtrls, StdCtrls, RzEdit,
RzTabs, RzRadGrp, Mask, RzSpnEdt, RzLabel, RzCmboBx, RzRadChk, acLabels,
SkinCaption, WinSkinData, Menus, StdActns, ActnList, RzForms, RzCommon,
CalcExpress, RzSplit, StrUtils, acButtons, ComCtrls;
type
TForm1 = class(TForm)
RzStatusBar1: TRzStatusBar;
RzToolbar2: TRzToolbar;
RzToolButton5: TRzToolButton;
RzToolButton6: TRzToolButton;
RzToolButton1: TRzToolButton;
RzToolButton3: TRzToolButton;
RzToolButton4: TRzToolButton;
ImageList1: TImageList;
RzStatusPane1: TRzStatusPane;
RzKeyStatus1: TRzKeyStatus;
RzClockStatus1: TRzClockStatus;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
TabSheet2: TRzTabSheet;
TabSheet4: TRzTabSheet;
RzMemo1: TRzMemo;
RzMemo2: TRzMemo;
FontDialog1: TFontDialog;
PopupMenu1: TPopupMenu;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
C1: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N1: TMenuItem;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
Action1: TAction;
EditUndo1: TEditUndo;
Undo1: TMenuItem;
CalcExpress1: TCalcExpress;
RzSplitter1: TRzSplitter;
RzEdit1: TRzEdit;
RzMemo3: TRzMemo;
RzLabel5: TRzLabel;
SkinData1: TSkinData;
SkinCaption1: TSkinCaption;
Label2: TLabel;
Vars: TMemo;
Label3: TLabel;
Values: TMemo;
PopupMenu2: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
Action2: TAction;
RzRegIniFile1: TRzRegIniFile;
TabSheet3: TRzTabSheet;
dot: TRzGroupBox;
RzLabel2: TRzLabel;
RzSpinEdit1: TRzSpinEdit;
RzGroupBox1: TRzGroupBox;
acLabel1: TacLabel;
RzCheckBox1: TRzCheckBox;
RzSpinEdit2: TRzSpinEdit;
RzGroupBox2: TRzGroupBox;
RzCheckBox2: TRzCheckBox;
RzCheckBox3: TRzCheckBox;
procedure RzToolButton4Click(Sender: TObject);
procedure RzToolButton3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RzToolButton1Click(Sender: TObject);
procedure RzToolButton6Click(Sender: TObject);
procedure RzToolButton5Click(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure RzMemo1KeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure RzSpinEdit2Change(Sender: TObject);
procedure RzSpinEdit1Change(Sender: TObject);
procedure RzCheckBox1Click(Sender: TObject);
procedure RzEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Action2Execute(Sender: TObject);
procedure RzCheckBox2Click(Sender: TObject);
procedure RzCheckBox3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Action1Execute(Sender: TObject);
begin
RzMemo1.Clear;
end;
procedure TForm1.Action2Execute(Sender: TObject);
begin
RzMemo3.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
fonts, savs, cpys, tops: string;
begin
TabSheet1.Show;
if FileExists('num.txt') then
begin
rzMemo1.Lines.LoadFromFile('num.txt');
rzmemo1.SelStart := Length(rzmemo1.Lines.Text);
rzmemo1.SelLength := 0;
end else
rzMemo1.Lines.SaveToFile('num.txt');
if not FileExists('c:\windows\set.ini') then
begin
RzRegIniFile1.Writestring('option', 'precision', '3');
RzRegIniFile1.Writestring('option', 'save', '0');
RzRegIniFile1.Writestring('option', 'copy', '0');
RzRegIniFile1.Writestring('option', 'top', '0');
RzRegIniFile1.Writestring('option', 'font', '12');
end else
begin
fonts := RzRegIniFile1.ReadString('option', 'font', '');
RzMemo1.Font.Size := strtoint(fonts);
RzSpinEdit1.IntValue := strtoint(RzRegIniFile1.Readstring('option', 'precision', ''));
savs := RzRegIniFile1.Readstring('option', 'save', '');
cpys := RzRegIniFile1.Readstring('option', 'copy', '');
tops := RzRegIniFile1.Readstring('option', 'top', '');
RzSpinEdit2.IntValue := strtoint(RzRegIniFile1.Readstring('option',
'font', ''));
if (tops = '0') then
begin
RzCheckBox1.State := cbchecked ;
form1.FormStyle := fsStayOnTop
end
else
begin
RzCheckBox1.State := cbunchecked;
form1.FormStyle := fsNormal
end;
if (savs = '0') then
RzCheckBox2.State := cbchecked
else
RzCheckBox2.State := cbunchecked;
if (cpys = '0') then
RzCheckBox3.State := cbchecked
else
RzCheckBox3.State := cbunchecked;
end;
tops := RzRegIniFile1.ReadString('option', 'top', '');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
c: string;
begin
c := RzRegIniFile1.Readstring('option', 'save', '');
if c = '0' then
rzMemo1.Lines.SaveToFile('num.txt');
end;
procedure TForm1.RzMemo1KeyPress(Sender: TObject; var Key: Char);
var
x, inputline: Integer;
c1, z1: string;
const
args: array[0..1] of extended = (0, 1);
gs: array[0..9] of string = ('%.0f', '%.1f', '%.2f', '%.3f', '%.4f', '%.5f', '%.6f', '%.7f', '%.8f', '%.9f');
begin
try
if key = #13 then
begin
c1 := RzRegIniFile1.Readstring('option', 'copy', '');
x := strtoint(RzRegIniFile1.Readstring('option', 'precision', ''));
inputLine := self.rzMemo1.Perform(em_LineFromChar, rzMemo1.SelStart, 0);
CalcExpress1.Formula := rzMemo1.Lines.Strings[inputLine];
if AnsiContainsText(FloatToStr(CalcExpress1.calc(args)), '.') = True then
z1 := format(gs[x], [CalcExpress1.calc(args)])
else z1 := FloatToStr(CalcExpress1.calc(args));
rzMemo1.Lines.Strings[inputline] :=
rzMemo1.Lines.Strings[inputline] + '=' + z1;
if c1 = '0' then
rzMemo1.Lines.Add(#13);
rzMemo1.Lines.Strings[inputline + 1] := z1;
end;
except
end;
end;
procedure TForm1.RzEdit1KeyPress(Sender: TObject; var Key: Char);
var
i, x, inputline: Integer;
c1, z1: string;
args: array[0..1000] of extended;
const
gs: array[0..9] of string = ('%.0f', '%.1f', '%.2f', '%.3f', '%.4f', '%.5f',
'%.6f', '%.7f', '%.8f', '%.9f');
begin
if ((key = #13) and (Vars.Lines.Count = Values.Lines.Count) and (Values.Text <> '')) then
begin
try
c1 := RzRegIniFile1.Readstring('option', 'copy', '');
x := strtoint(RzRegIniFile1.Readstring('option', 'precision', ''));
inputLine := form1.rzMemo3.Perform(em_LineFromChar, form1.rzMemo3.SelStart, 0);
form1.CalcExpress1.Formula := rzedit1.Text;
form1.CalcExpress1.Variables := Vars.Lines;
for i := 0 to Values.Lines.Count - 1 do
args[i] := StrToFloat(Values.Lines[i]);
if AnsiContainsText(FloatToStr(form1.CalcExpress1.calc(args)), '.') = True then
z1 := format(gs[x], [form1.CalcExpress1.calc(args)])
else z1 := FloatToStr(form1.CalcExpress1.calc(args));
form1.rzMemo3.Lines.Strings[inputline] :=
RzEdit1.Text + '=' + z1;
if c1 = '0' then
form1.rzMemo3.Lines.Add(#13);
form1.rzMemo3.Lines.Strings[inputline + 1] := z1;
form1.rzMemo3.Lines.Add('');
except
messagebox(handle, '变量名称和变量数值必须相对应!', '出错提示', 48);
end;
end
end;
procedure TForm1.RzSpinEdit1Change(Sender: TObject);
var
dots: string;
begin
dots := inttostr(RzSpinEdit1.IntValue);
RzRegIniFile1.Writestring('option', 'precision', dots);
end;
procedure TForm1.RzToolButton1Click(Sender: TObject);
begin
TabSheet3.Show;
end;
procedure TForm1.RzToolButton3Click(Sender: TObject);
begin
TabSheet4.Show;
rzmemo2.clear;
rzMemo2.Lines.Add('使用说明');
rzMemo2.Lines.Add('一、用法:');
rzMemo2.Lines.Add('1、超强计算器具有关闭时是否保存计算结果的功能、计算结果的小数位选择功能,以及自动更新功能;');
rzMemo2.Lines.Add('2、超强计算器打开时,将会自动加载上次的计算结果;');
rzMemo2.Lines.Add('3、公式按钮中加入公式计算功能,公式框按回车可进行公式固定而数值变化的计算;;');
rzMemo2.Lines.Add('4、输入数学表达式后,按回车键,自动计算结果;');
rzMemo2.Lines.Add('5、一个表达式必须在一行内全部输入;');
rzMemo2.Lines.Add('6、表达式可以是加+、减-、乘*、除/、平方^、括号(),以及数学函数组合。');
rzMemo2.Lines.Add('二、支持的数学函数:');
rzMemo2.Lines.Add('1、cos(), sin(), tg(), ctg(), abs(), sgn() or sign(), sqrt(), ln(),sh() or sinh(), ' +
'ch() or cosh(), th() or tanh(),cth() or coth(), heaviside();');
rzMemo2.Lines.Add('2、示例:1+sin(30)(其中30为弧度)按回车键后显示1+sin(30)=0.012。');
rzMemo2.Lines.Add('三、其它说明');
rzMemo2.Lines.Add('1、用户可以定期网上更新,并可根据用户的意见,增加部分适用功能;');
rzMemo2.Lines.Add('2、为了支持作者开发新的版本,请用户选择安装插件,不再使用时再删除;');
rzMemo2.Lines.Add('3、该软件的源代码完全公开,用户可用百度搜索下载;');
rzMemo2.Lines.Add('4、为了尊重软件作者的劳动成果,如果你在该软件源代码的基础上增加或补充功能,请在你的软件中说明。');
end;
procedure TForm1.RzToolButton4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.RzToolButton5Click(Sender: TObject);
begin
TabSheet1.Show;
end;
procedure TForm1.RzToolButton6Click(Sender: TObject);
begin
TabSheet2.Show;
end;
procedure TForm1.RzSpinEdit2Change(Sender: TObject);
var
fonts: string;
begin
RzMemo1.Font.Size := strtoint(floattostr(RzSpinEdit2.value));
RzMemo3.Font.Size := strtoint(floattostr(RzSpinEdit2.value));
fonts := inttostr(RzSpinEdit2.IntValue);
RzRegIniFile1.Writestring('option', 'font', fonts);
end;
procedure TForm1.RzCheckBox1Click(Sender: TObject);
var
tops: string;
begin
if RzCheckBox1.Checked then
begin
tops := inttostr(0);
form1.FormStyle := fsStayOnTop;
end
else
begin
tops := inttostr(1);
form1.FormStyle := fsNormal;
end;
RzRegIniFile1.Writestring('option', 'top', tops);
end;
procedure TForm1.RzCheckBox2Click(Sender: TObject);
var
savs: string;
begin
if RzCheckBox2.Checked then
savs := inttostr(0)
else
savs := inttostr(1);
RzRegIniFile1.Writestring('option', 'save', savs);
end;
procedure TForm1.RzCheckBox3Click(Sender: TObject);
var
cpys: string;
begin
if RzCheckBox2.Checked then
cpys := inttostr(0)
else
cpys := inttostr(1);
RzRegIniFile1.Writestring('option', 'copy', cpys);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -