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

📄 newunit.pas

📁 帮朋友编写的幼儿教育的管理平台
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit NewUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons,math, ADODB, DB, Grids, DBGrids, StrUtils;

type
  TNew_Form = class(TForm)
    Class_Select: TComboBox;
    New_ADD: TBitBtn;
    My_Image: TImage;
    Left_Wall: TImage;
    ZHIXIAN: TGroupBox;
    WAITUH: TGroupBox;
    NEIAOH: TGroupBox;
    Label5: TLabel;
    Label6: TLabel;
    L_SX: TEdit;
    L_SY: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    L_L: TEdit;
    L_D: TEdit;
    L_Memo: TMemo;
    Label9: TLabel;
    W_SX: TEdit;
    Label14: TLabel;
    W_SY: TEdit;
    Label15: TLabel;
    W_L: TEdit;
    Label16: TLabel;
    W_H: TEdit;
    Label17: TLabel;
    W_D: TEdit;
    Label10: TLabel;
    N_D: TEdit;
    N_H: TEdit;
    Label11: TLabel;
    N_L: TEdit;
    Label12: TLabel;
    N_SY: TEdit;
    Label13: TLabel;
    Label18: TLabel;
    N_SX: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    N_DS: TComboBox;
    W_DS: TComboBox;
    Label2: TLabel;
    L_DS: TComboBox;
    Label3: TLabel;
    LineWidth: TComboBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    Button1: TButton;
    XC: TComboBox;
    Label4: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    OrderName: TEdit;
    Right_Wall: TImage;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label22: TLabel;
    Label23: TLabel;
    MY_BF_HD: TEdit;
    MY_BF_FXKD: TEdit;
    Lablel28: TLabel;
    MY_BL_FXKD: TEdit;
    MY_ZFHD: TEdit;
    Label24: TLabel;
    Label25: TLabel;
    JZ_YTGD: TEdit;
    procedure New_ADDClick(Sender: TObject);
    procedure Class_SelectChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure S_REDContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure S_BLKContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure S_BLUContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure LineWidthChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure XCChange(Sender: TObject);
  private
    { Private declarations }
  public
    procedure My_Rec(PX1:integer;PY1:integer;Q:real;L:real;H:real;UD:integer);
    Function XZZ(JD:Real;MM:integer;NW:string;GB:string;XC:String):double ;
    { Public declarations }
  end;

var
  New_Form: TNew_Form;
   Now_Class:String;
   Now_Num:integer ;
   D_Total:Double ;
   BF_HD:integer ;  //边封厚度
   BF_FXKD:integer ; //边封缝隙宽度
   BL_FXKD:integer ;
   ZFHD:Integer;//06型材中缝厚度
   GDDX_05:Integer;//05大小轨道区分

implementation

uses DataM, CXUnit;

{$R *.dfm}
Function TNew_Form.XZZ(JD:Real;MM:integer;NW:string;GB:string;XC:String):double ;
Var SQLString:String;
Var XZ_Total_REC,T_XZ_Num:integer ;
Var P_XiuZ_Z,P_D,N_XiuZ_Z,N_D:Double ;
begin
{SQLString := 'select * from XiuZTbl where XC='''+XC+''' and NW='''+NW+''' and BLH='+IntToStr(MM)+' and GB='''+GB+''' order by XiuZ_D' ;
DM.XiuZQuery.Close ;
DM.XiuZQuery.SQL.Clear ;
DM.XiuZQuery.SQL.Add(SQLString) ;
DM.XiuZQuery.Open ;
XZ_Total_REC := DM.XiuZQuery.RecordCount ;
      XZZ := 0.00 ;

if XZ_Total_REC > 0 then
begin
  DM.XiuZQuery.First ;
  T_XZ_Num := 1 ;
  while T_XZ_Num < XZ_Total_REC  do
  begin
    P_D := DM.XiuZQuery.FieldByName('XiuZ_D').AsFloat ;
    P_XiuZ_Z := DM.XiuZQuery.FieldByName('XiuZ_Z').AsFloat ;
    DM.XiuZQuery.Next ;
     N_D := DM.XiuZQuery.FieldByName('XiuZ_D').AsFloat ;
     N_XiuZ_Z := DM.XiuZQuery.FieldByName('XiuZ_Z').AsFloat ;
    if (JD>=P_D) and (JD<N_D) then
    begin
      XZZ :=P_XiuZ_Z-((P_XiuZ_Z-N_XiuZ_Z)/(N_D-P_D))*(JD-P_D) ;//x=x1-(x1-x2)/(y2-y1)*(y-y1);
      //XZZ:=Abs(XZZ) ;
    end
    else
    begin
    end ;
    T_XZ_Num := T_XZ_Num + 1 ;
  end ;
end ;
//XZZ := 0.00 ;//DM.XiuZQuery.FieldByName('XiuZ_Z').AsFloat ;

DM.XiuZQuery.Close ;     //}
end ;

procedure TNew_Form.New_ADDClick(Sender: TObject);
var PX1,PY1,X1,X2,X3,X4,Y1,Y2,Y3,Y4,DS:integer;
Var SR,J,L,H,D,YTGD:Real;
Var Q,SCJD,SJD,SNJD:Double ;
Var SQLInsert,GHD,M_XC:String;
begin
{if Now_Num = 1 then
begin
  DM.Temp_Query.Close ;
  DM.Temp_Query.SQL.Clear ;
  DM.Temp_Query.SQL.Add('delete * from TempTbl') ;
  DM.Temp_Query.ExecSQL ;
  DM.Temp_Query.Close ;
  DM.Temp_Query.SQL.Clear ;
  DM.Temp_Query.SQL.Add('select * from TempTbl') ;
  DM.Temp_Query.ExecSQL ;
  D_Total:= 0.00 ;
end ;
GHD := LineWidth.Text ;
M_XC := XC.Text ;///  leftStr(XC.Text,2)
YTGD := StrToFloat(JZ_YTGD.Text) ;
if Now_Class='L' then
begin
  X1:=StrToInt(L_SX.Text) ;
  Y1:=StrToInt(L_SY.Text) ;
  L:=StrToFloat(L_L.Text) ;
  D:=StrToFloat(L_D.Text) ;
  DS:=StrToInt(L_DS.Text) ;
  D_Total:=D_Total+D ;
  Q:=D_Total*Pi/180 ;
  X2:=X1+Round(L*Cos(Q)/10) ;
  Y2:=Y1-Round(L*Sin(Q)/10) ;
  //Draw
  My_Image.Canvas.MoveTo(X1,Y1);
  My_Image.Canvas.LineTo(X2,Y2);
  //Draw end
  //写数据库
  SQLInsert:='insert into TempTbl(SN,ClassType,SX,SY,SL,SD,SDD,DS,GHD,XC,YTGD) values ('+IntToStr(Now_Num)+',''L'','+IntToStr(X1)+','+IntToStr(Y1)+','+FloatToStr(L)+','+FloatToStr(D)+','+FloatToStr(D_Total)+','+IntToStr(DS)+','+GHD+','''+M_XC+''','+FloatToStr(YTGD)+')' ;
  //wr data end
  //回写起点X,Y
  L_SX.Text :=IntToStr(X2) ;
  W_SX.Text :=IntToStr(X2) ;
  N_SX.Text :=IntToStr(X2) ;
  L_SY.Text :=IntToStr(Y2) ;
  W_SY.Text :=IntToStr(Y2) ;
  N_SY.Text :=IntToStr(Y2) ;
  //
end
else if Now_Class='W' then
  begin
    X1:=StrToInt(W_SX.Text) ;
    Y1:=StrToInt(W_SY.Text) ;
    L:=StrToFloat(W_L.Text) ;
    D:=StrToFloat(W_D.Text) ;
    H:=StrToFloat(W_H.Text) ;
    DS:=StrToInt(W_DS.Text) ;
    D_Total:=D_Total+D ; //SDD
    Q:=D_Total*Pi/180 ;
    SR := (L*L+4*H*H)/(8*H) ;
    if H > (L*L+4*H*H)/(8*H) then //弦对应的圆心角
    begin
      SJD := 180-ArcSin((4*L*H)/(L*L+4*H*H))*180/Pi ;
      SNJD := 2*SJD/DS ;//两段之间的夹角(线内部)
    end
    else
    begin //仂弧
      SJD := ArcSin((4*L*H)/(L*L+4*H*H))*180/Pi ;
      SNJD := 180-2*SJD/DS ;//两段之间的夹角(线内部)
    end ;
    SCJD := SJD*(DS-1)/DS ; //第一段与弦之间的夹角

    X2:=X1+Round(L*Cos(Q)/10) ;
    Y2:=Y1-Round(L*Sin(Q)/10) ;
    My_Rec(X1,Y1,Q,Round(L/10),Round(H/10),0) ; //1为内
  //写数据库
  SQLInsert:='insert into TempTbl(SN,ClassType,SX,SY,SL,SH,SD,SDD,DS,SCJD,SJD,SNJD,GHD,SR,XC,YTGD) values ('+IntToStr(Now_Num)+',''W'','+IntToStr(X1)+','+IntToStr(Y1)+','+FloatToStr(L)+','+FloatToStr(H)+','+FloatToStr(D)+','+FloatToStr(D_Total)+','+IntToStr(DS)+','+FloatToStr(SCJD)+','+FloatToStr(SJD)+','+FloatToStr(SNJD)+','+GHD+','+FloatToStr(SR)+','''+M_XC+''','+FloatToStr(YTGD)+')' ;
  //wr data end
    //回写起点X,Y
  L_SX.Text :=IntToStr(X2) ;
  W_SX.Text :=IntToStr(X2) ;
  N_SX.Text :=IntToStr(X2) ;
  L_SY.Text :=IntToStr(Y2) ;
  W_SY.Text :=IntToStr(Y2) ;
  N_SY.Text :=IntToStr(Y2) ;
    //
  end
  else if Now_Class='N' then
  begin
    X1:=StrToInt(N_SX.Text) ;
    Y1:=StrToInt(N_SY.Text) ;
    L:=StrToFloat(N_L.Text) ;
    D:=StrToFloat(N_D.Text) ;
    H:=StrToFloat(N_H.Text) ;
    DS:=StrToInt(N_DS.Text) ;
    D_Total:=D_Total+D ; //SDD
    Q:=D_Total*Pi/180 ;
    SR := (L*L+4*H*H)/(8*H) ;
    if H > (L*L+4*H*H)/(8*H) then //弦对应的圆心角
    begin
      SJD := 180-ArcSin((4*L*H)/(L*L+4*H*H))*180/Pi ;
      SNJD := 2*SJD/DS ;//两段之间的夹角(线内部)
    end
    else
    begin //仂弧
      SJD := ArcSin((4*L*H)/(L*L+4*H*H))*180/Pi ;
      SNJD := 180.00-2*SJD/DS ;//两段之间的夹角(线内部)
    end ;
    SCJD := - SJD*(DS-1)/DS ; //第一段与弦之间的夹角

    X2:=X1+Round(L*Cos(Q)/10) ;
    Y2:=Y1-Round(L*Sin(Q)/10) ;
    My_Rec(X1,Y1,Q,Round(L/10),Round(H/10),1) ; //1为内
  //写数据库
  SQLInsert:='insert into TempTbl(SN,ClassType,SX,SY,SL,SH,SD,SDD,DS,SCJD,SJD,SNJD,GHD,SR,XC,YTGD) values ('+IntToStr(Now_Num)+',''N'','+IntToStr(X1)+','+IntToStr(Y1)+','+FloatToStr(L)+','+FloatToStr(H)+','+FloatToStr(D)+','+FloatToStr(D_Total)+','+IntToStr(DS)+','+FloatToStr(SCJD)+','+FloatToStr(SJD)+','+FloatToStr(SNJD)+','+GHD+','+FloatToStr(SR)+','''+M_XC+''','+FloatToStr(YTGD)+')' ;
  //wr data end
    //回写起点X,Y
  L_SX.Text :=IntToStr(X2) ;
  W_SX.Text :=IntToStr(X2) ;
  N_SX.Text :=IntToStr(X2) ;
  L_SY.Text :=IntToStr(Y2) ;
  W_SY.Text :=IntToStr(Y2) ;
  N_SY.Text :=IntToStr(Y2) ;
    //
  end ;

DM.Temp_Query.Close ;
DM.Temp_Query.SQL.Clear ;
DM.Temp_Query.SQL.Add(SQLInsert) ;
DM.Temp_Query.ExecSQL ;
Now_Num := Now_Num+1 ;

//My_Image.Canvas.Rectangle(0,300,400,302);
//矩形框,(起X,起Y,终X,终Y)
//My_Image.Canvas.Arc(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
//圆弧,(圆弧所在的矩形框X1,Y1,X2,Y2,
//圆弧以圆心为轴,弧形的起点X,Y,逆时针的弧形终点X,Y)
//My_Image.Canvas.chord(X1,Y1,X2,Y2,X3,Y3,X4,Y4);  //带弦的弧
BitBtn2.Click ;
Button4.Visible := True ;       //}
end;

procedure TNew_Form.My_Rec(PX1:integer;PY1:integer;Q:real;L:real;H:real;UD:integer);
//PX1,PY1弧形的起点,Q弧弦与0之间的角度(单位是弧度),L弦长,H弦高,UD 0上突/1下凸
Var My_Array:Array[0..7] of Integer;
Var R,J:Real;
Var UL:integer;
begin
R:=(L*L+4*H*H)/(8*H);
if H>R then
begin
  UL:=1 ; //确定为忧弧
  J:=ArcSin(L/(2*R));
end
else
begin
  UL:=0 ;//确定为仂弧
  J:=ArcCos(L/(2*R));
end ;
if UD=0 then   //外凸
begin
  if UL=0 then
  begin    //仂弧、外凸
    My_Array[0]:=Round(PX1+R*(Cos(J-Q)-1));
    My_Array[1]:=Round(PY1+R*(Sin(J-Q)-1));
    My_Array[2]:=Round(PX1+R*(Cos(J-Q)+1));
    My_Array[3]:=Round(PY1+R*(Sin(J-Q)+1));
    My_Array[4]:=Round(PX1+L*Cos(Q)) ;
    My_Array[5]:=Round(PY1-L*Sin(Q)) ;
    My_Array[6]:=PX1 ;
    My_Array[7]:=PY1 ;
  end
  else
  begin    //忧弧、外凸
    My_Array[0]:=Round(PX1-R*(1-Sin(J-Q)));
    My_Array[1]:=Round(PY1-R*(1+Cos(J-Q)));
    My_Array[2]:=Round(PX1+R*(1+Sin(J-Q)));
    My_Array[3]:=Round(PY1+R*(1-Cos(J-Q)));
    My_Array[4]:=Round(PX1+L*Cos(Q)) ;
    My_Array[5]:=Round(PY1-L*Sin(Q)) ;
    My_Array[6]:=PX1 ;
    My_Array[7]:=PY1 ;
  end ;
end
else
begin          //内凸
  if UL=0 then //   仂弧、内凸
  begin
    My_Array[0]:=Round(PX1+R*(Cos(J+Q)-1));
    My_Array[1]:=Round(PY1-R*(Sin(J+Q)-1));

⌨️ 快捷键说明

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