From 868daf94f29ce1ffdd799a68c07bb668cd373bcd Mon Sep 17 00:00:00 2001 From: HP\李良庭 <liliangting@lanpucloud.cn:1111> Date: 星期二, 08 七月 2025 11:49:03 +0800 Subject: [PATCH] 提交分辨率自适应版本V3.1.0.1500 --- src/uCalc.~pas | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 257 insertions(+), 0 deletions(-) diff --git a/src/uCalc.~pas b/src/uCalc.~pas new file mode 100644 index 0000000..67bca8d --- /dev/null +++ b/src/uCalc.~pas @@ -0,0 +1,257 @@ +unit uCalc; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, Math, StrUtils, Buttons, sSpeedButton, StdCtrls, sEdit, sBitBtn; + +type + TfrmCalc = class(TForm) + edtInput: TsEdit; + edt1: TsBitBtn; + edt2: TsBitBtn; + edt3: TsBitBtn; + edtAdd: TsBitBtn; + edtDel: TsBitBtn; + edt4: TsBitBtn; + edt5: TsBitBtn; + edt6: TsBitBtn; + edtDoc: TsBitBtn; + edtEsc: TsBitBtn; + edt7: TsBitBtn; + edt8: TsBitBtn; + edt9: TsBitBtn; + edt0: TsBitBtn; + edtReturn: TsBitBtn; + edtClose: TsBitBtn; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure edtCloseClick(Sender: TObject); + procedure edt1Click(Sender: TObject); + procedure edtAddClick(Sender: TObject); + procedure edtDocClick(Sender: TObject); + procedure edtDelClick(Sender: TObject); + procedure edtEscClick(Sender: TObject); + procedure edtReturnClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + strParam : String; + procedure InsertStringAtCursor(EditControl: TsEdit; Str: string); + procedure DeleteCharsBeforeCursor(EditControl: TsEdit; Count: Integer=1); + end; + +var + frmCalc: TfrmCalc; + +implementation + +uses + uMain, global; + +{$R *.dfm} + +//------- 自定义功能函数 ------------------------------------------------------- +//从光标处插入字符 +procedure TfrmCalc.InsertStringAtCursor(EditControl: TsEdit; Str: string); +begin + // 保存当前光标位置 + EditControl.SelStart := EditControl.SelStart; + EditControl.SelLength := 0; // 不选择任何文本,确保只插入而不替换 + EditControl.SelText := Str; // 插入字符串 +end; + +//自定义函数:从光标处删除字符 +procedure TfrmCalc.DeleteCharsBeforeCursor(EditControl: TsEdit; Count: Integer=1); +var + CursorPos, NewStart: Integer; +begin + CursorPos := EditControl.SelStart; + if CursorPos >= Count then + begin + NewStart := CursorPos - Count; // 计算新的选择起点 + EditControl.SelStart := NewStart; + EditControl.SelLength := Count; // 选择Count个字符 + EditControl.SelText := ''; // 删除选定的文本 + end + else + begin + // 如果Count大于光标位置,则删除所有在光标之前的字符 + EditControl.SelStart := 0; + EditControl.SelLength := CursorPos; + EditControl.SelText := ''; + end; +end; +//------- 初始化 --------------------------------------------------------------- +procedure TfrmCalc.FormShow(Sender: TObject); +begin + edtInput.Text := strParam; + //初始化密码 + frmMain.sLoginPwd := ''; +end; + +procedure TfrmCalc.FormClose(Sender: TObject; var Action: TCloseAction); +begin + Action := caFree; + frmCalc := nil; +end; + +//------- 按钮功能区------------------------------------------------------------ +//数字区功能 +procedure TfrmCalc.edt1Click(Sender: TObject); +begin + case TsBitBtn(Sender).Tag of + 0: InsertStringAtCursor(edtInput.Text,'0'); + 1: InsertStringAtCursor(edtInput.Text,'1'); + 2: InsertStringAtCursor(edtInput.Text,'2'); + 3: InsertStringAtCursor(edtInput.Text,'3'); + 4: InsertStringAtCursor(edtInput.Text,'4'); + 5: InsertStringAtCursor(edtInput.Text,'5'); + 6: InsertStringAtCursor(edtInput.Text,'6'); + 7: InsertStringAtCursor(edtInput.Text,'7'); + 8: InsertStringAtCursor(edtInput.Text,'8'); + 9: InsertStringAtCursor(edtInput.Text,'9'); + end; +end; + +procedure TfrmCalc.edtCloseClick(Sender: TObject); +begin + Close(); +end; + +//输入正负号 +procedure TfrmCalc.edtAddClick(Sender: TObject); +var + ss : string; + len : Integer; +begin + ss := LeftStr(edtInput.Text,1); + len := Length(edtInput.Text); + if ss='-' then + edtInput.Text := RightStr(edtInput.Text, len-1) + else + edtInput.Text := '-'+edtInput.Text; +end; + +//输入.号 +procedure TfrmCalc.edtDocClick(Sender: TObject); +begin + //if pos('.',edtInput.Text)=0 then + //edtInput.Text := edtInput.Text+'.'; + InsertStringAtCursor(edtInput.Text,'.'); +end; + +//输入删除符号 +procedure TfrmCalc.edtDelClick(Sender: TObject); +begin + DeleteCharsBeforeCursor(edtInput); +end; + +//输入esc +procedure TfrmCalc.edtEscClick(Sender: TObject); +begin + edtInput.Clear; +end; + +//输入回车确认 +procedure TfrmCalc.edtReturnClick(Sender: TObject); +//var +// len : Integer; +begin + //将结果更新到全局变量 + glCalcOutput := edtInput.Text; + //处理异常--字符串最后一位是. + {if RightStr(glCalcOutput,1)='.' then begin + len := Length(glCalcOutput); + glCalcOutput := LeftStr(glCalcOutput, len-1); + end; } + //按焦点返回字符串 + case glCurrFocus of + //------ 0专指返回手动模式口令值 ----- + 0: begin + frmMain.sLoginPwd := glCalcOutput; + end; + //------------------------------------ + 1: begin + frmMain.edtMois1.Text := glCalcOutput; + end; + 2: begin + frmMain.edtMois2.Text := glCalcOutput; + end; + 3: begin + frmMain.edtMois3.Text := glCalcOutput; + end; + 4: begin + frmMain.edtMois4.Text := glCalcOutput; + end; + 5: begin + frmMain.edtMois5.Text := glCalcOutput; + end; + 6: begin + frmMain.edtManCoef1.Text := glCalcOutput; + end; + 7: begin + frmMain.edtManCoef2.Text := glCalcOutput; + end; + 8: begin + frmMain.edtManCoef3.Text := glCalcOutput; + end; + 9: begin + frmMain.edtManCoef4.Text := glCalcOutput; + end; + 10: begin + frmMain.edtManCoef5.Text := glCalcOutput; + end; + 11: begin + frmMain.edtIP.Text := glCalcOutput; + end; + 12: begin + frmMain.edtPort.Text := glCalcOutput; + end; + 13: begin + frmMain.edtTime1.Text := glCalcOutput; + end; + 14: begin + frmMain.edtTime2.Text := glCalcOutput; + end; + 15: begin + frmMain.edtWeight1.Text := glCalcOutput; + end; + 16: begin + frmMain.edtWeight2.Text := glCalcOutput; + end; + 17: begin + frmMain.edtWeight3.Text := glCalcOutput; + end; + 18: begin + frmMain.edtWTare.Text := glCalcOutput; + end; + 19: begin + frmMain.edtRange.Text := glCalcOutput; + end; + 20: begin + frmMain.edtVolume.Text := glCalcOutput; + end; + 21: begin + frmMain.edtTare.Text := glCalcOutput; + end; + 22: begin + frmMain.edtDelay.Text := glCalcOutput; + end; + 23: begin + frmMain.edtPassword.Text := glCalcOutput; + end; + 24: begin + frmMain.edtManVal.Text := glCalcOutput; + end; + 25: begin + frmMain.edtIntercept.Text := glCalcOutput; + end; + end; + //关闭键盘 + Close(); +end; + +end. -- Gitblit v1.9.3