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