⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsq.~pas

📁 这是用Delphi编写的中小企业管理系统
💻 ~PAS
字号:
unit jsq;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, StdCtrls, Buttons;

type
  Tf_jsq = class(TForm)
    MainMenu1: TMainMenu;
    E1: TMenuItem;
    H1: TMenuItem;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton20: TSpeedButton;
    Back: TSpeedButton;
    Clear: TSpeedButton;
    N1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure ClearClick(Sender: TObject);
    procedure BackClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton16Click(Sender: TObject);
    procedure SpeedButton20Click(Sender: TObject);
    procedure SpeedButton15Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
  private
    { Private declarations }
  protected
    procedure CreateParams(var Params: TCreateParams);override;
  public                  
    { Public declarations }
  end;
  TRightEdit = Class(TEdit)
  Protected
    procedure CreateParams(var Params: TCreateParams);override;
  End;
  type  operator = (Emp,add,sub,mul,divid); //空、加、减 、乘、除
var
  f_jsq: Tf_jsq;
  RightEdit1: TRightEdit;
  operate: Operator = emp;
  Operate1: Operator = emp;//记录上一次用户按下的运算符
  Pointed: Boolean = False;//是否输入小数点
  temp: String = '';
  tempnum: Real = 0.0;
implementation

{$R *.dfm}

{ Tf_jsq }

{ TRightEdit }

procedure TRightEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := params.Style - ES_Right;
end;

procedure Tf_jsq.FormCreate(Sender: TObject);
begin
  RightEdit1 := TRightEdit.Create(nil);
  with RightEdit1 do
  begin
    Parent := Panel1;
    Text := '0.';
    Align := alTop;
    Enabled := False;
    ReadOnly := True;
    Show;
  end;
end;

procedure Tf_jsq.ClearClick(Sender: TObject);
begin
  Pointed := False;
  RightEdit1.Text := '0.';
  TempNum := 0.0;
  Operate := emp;
  temp := '';
end;

procedure Tf_jsq.BackClick(Sender: TObject);
var
  Strwidth: Integer;
  temp: String;
begin
  if Operate = emp then
  begin
    if Trim(RightEdit1.Text)<>'0.' then
    begin
      if Length(Trim(RightEdit1.Text))>2 then
      begin
        Temp := Trim(RightEdit1.Text);
        Strwidth := Length(Trim(RightEdit1.Text));
        if (StrToFloat(RightEdit1.Text)<9)and(strwidth = 3) then  //为负数 例如 "-1."
        begin
          RightEdit1.Text := '0.';
          Pointed := False;
        end
        else
        begin
          if Pointed = False then
            Delete(Temp,StrWidth-1,1)
          else
          begin
            if Copy(temp,strwidth,1)= '.' then
              Pointed := False
            else
              Delete(Temp,StrWidth,1);
          end;
          if Trim(temp) = '.' then
            Pointed := False;
          RightEdit1.Text := temp;
        end;
      end
      else
      begin
        Pointed := False;
        RightEdit1.Text := '0.';
      end;
    end;
  end
  else
    Beep;
end;

procedure Tf_jsq.SpeedButton1Click(Sender: TObject);
var
  strwidth: Integer;
begin
   if (temp = '')or(Operate<>emp) then
     TempNum := StrToFloat(RightEdit1.Text);
   if Operate <>emp then
     RightEdit1.Text := '0.';
  Temp:= Trim(RightEdit1.Text);
  Strwidth := Length(temp);
  if Sender is TSpeedButton then
  begin
    if Operate <> emp then
    begin
      RightEdit1.Text := '0.';
      Operate := emp;
    end;
    if Pointed = False then
      begin
      if StrToFloat(RightEdit1.Text)=0 then
        RightEdit1.Text := FloatToStr(StrToFloat(RightEdit1.Text)+StrToInt(TSpeedButton(Sender).Caption))+'.'
      else
      begin
        Insert(Trim(TSpeedButton(Sender).Caption),temp,StrWidth);
        RightEdit1.Text := temp;
      end;
    end
    else
    begin
      Insert(Trim(TSpeedButton(Sender).Caption),temp,StrWidth+1);
      RightEdit1.Text := temp;
    end;
  end;
end;

procedure Tf_jsq.SpeedButton11Click(Sender: TObject);

begin

  if Operate <> emp then
  begin
    Tempnum := StrToFloat(RightEdit1.Text);
    RightEdit1.Text := '0.';
    Operate := emp;
  end;
    if StrToFloat(RightEdit1.Text)>0 then
    begin
      RightEdit1.Text :=  FloatToStr(-StrToFloat(RightEdit1.Text)) ;
      if Pos('.',Trim(RightEdit1.Text))=0 then
        RightEdit1.Text :=  FloatToStr(StrToFloat(RightEdit1.Text))+'.';
    end
    else if StrToFloat(RightEdit1.Text)<0 then
    begin
      RightEdit1.Text :=  FloatToStr(abs(StrToFloat(RightEdit1.Text)));
      if Pos('.',Trim(RightEdit1.Text))=0 then
        RightEdit1.Text :=  FloatToStr(StrToFloat(RightEdit1.Text))+'.';
    end;
end;

procedure Tf_jsq.SpeedButton12Click(Sender: TObject);
begin
  if Operate <>emp then
  begin
    Operate := emp;
    RightEdit1.Text := '0.';
  end;
  if Pointed = True then
    Beep
  else
    Pointed := True;
end;

procedure Tf_jsq.SpeedButton16Click(Sender: TObject);
begin

  SpeedButton20.OnClick(Sender);
  Operate := add;
  Operate1 := add;
end;

procedure Tf_jsq.SpeedButton20Click(Sender: TObject);
begin
  if (Operate = emp)and(Trim(temp)<>'') then
  begin
    case Operate1 of
      add: begin
             RightEdit1.Text:= FloatToStr(StrToFloat(RightEdit1.Text)+TempNum);
           end;
      sub: begin
             RightEdit1.Text:= FloatToStr(TempNum-StrToFloat(RightEdit1.Text));
           end;
      mul: begin
             RightEdit1.Text:= FloatToStr(TempNum*StrToFloat(RightEdit1.Text));
           end;
      divid: begin
               if StrToFloat(RightEdit1.Text)<>0 then
                 RightEdit1.Text:= FloatToStr(TempNum/StrToFloat(RightEdit1.Text))
               else
                 Application.MessageBox('除数不能为零.','提示',64);
             end;
    end;
  end;
  Operate1 := emp;
  Pointed := False;
  if Pos('.',Trim(RightEdit1.Text))=0 then
    RightEdit1.Text:= Trim(RightEdit1.Text)+'.';
end;

procedure Tf_jsq.SpeedButton15Click(Sender: TObject);
begin
  SpeedButton20.OnClick(Sender);
  Operate1 := sub;
  Operate := sub;
end;

procedure Tf_jsq.SpeedButton14Click(Sender: TObject);
begin
  SpeedButton20.OnClick(Sender);
  Operate1 := mul;
  Operate := mul;
end;

procedure Tf_jsq.SpeedButton13Click(Sender: TObject);
begin
  SpeedButton20.OnClick(Sender);
  Operate1 := divid;
  Operate := divid;
end;

procedure Tf_jsq.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style - WS_EX_TOOLWINDOW;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -