| |||||
МЕНЮ
| Выбор материала и расчет параметров обделок вертикальных стволов метрополитеновp> PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*C1*K0*(1+B/A); PLines[isP2,1] := (C1*C1-1)*(C1*C1-1)* Mass*R_press/4*C1*C1*K0*(1+B/A); PLines[isP0,2] := -(C1*C1-1)*Mass*R_stretch/2*C1*C1*K0*(1+B/A); PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)* Mass*R_stretch/4*C1*C1*K0*(1+B/A); PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0* (C2*C2+1)); PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1; PLines[isP0,5] := -(C2*C2-1)* Mass*R_stretch/(2*C2*C2-K0*(C2*C2+1)); PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1; end else begin {Чугун} PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*K0*(1+B/A); PLines[isP2,1] := (C2*C2-1)*(C2*C2-1)* Mass*R_press/4*C1*C1*K0*(1+B/A); PLines[isP0,2] := -(C2*C2-1)*Mass*R_stretch/2*C1*K0*(1+B/A); PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)* Mass*R_stretch/4*C1*C1*K0*(1+B/A); PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0* (C2*C2+1)); PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1; PLines[isP0,5] := -(C2*C2-1)*Mass*R_stretch/(2*C2*C2-K0* (C2*C2+1)); PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1; end; DrawForm.ShowModal; end else if RadioButton2.Checked then begin Calc; P0 := StrToFloat(Edit1.Text); P2 := StrToFloat(Edit2.Text); SIGMARS := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0+2*P2*L/ (C1*C1-1))); SIGMARR := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0-2*P2*L/ (C1*C1-1))); SIGMASS := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))+P2*L1/ (C2*C2-1)*(C2*C2-1)); SIGMASR := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))-P2*L1/ (C2*C2-1)*(C2*C2-1)); if (SIGMARS>Mass*R_press) or (SIGMARR>Mass*R_stretch) or (SIGMASS>Mass*R_press) or (SIGMASR>Mass*R_stretch) then MessageDlg('Несущая способность не обеспечена',mtInformation,[mbOk],0) else MessageDlg('Несущая способность обеспечена',mtInformation,[mbOk],0); end else begin i:=1; PkrOld :=0; repeat i := i+1; Pkr := (i*i-1)*Eo*J/((1-Puasson)*(1-Puasson)*R*R*R)+Ep/(2* (1+PuassonP))*((i+1)*(i+1)/(i*i*(i-1))+(i-1)* (i-1)/(i*i*(i+1)*(3-4*PuassonP))); if Pkr < PkrOld then PkrOld := Pkr else i:=0; until i = 0; P0 := StrToFloat(Edit1.Text); if P0 MaxY then MaxY := PLines[isP2,i]; if PLines[isP0,i] < MinX then MinX := PLines[isP0,i]; if PLines[isP2,i] < MinY then MinY := PLines[isP2,i]; end; if MaxX > 200 then Nx := 100 else Nx := 10; MaxX := Round(MaxX/Nx)*Nx+Nx; if MaxY > 200 then Ny := 100 else Ny := 10; Canvas.Pen.Color := clBlack; R.Left := 10; R.Top := 10; R.Right := Width - 15; R.Bottom := Height - 70; Canvas.FrameRect(R); Canvas.Brush.Color := clBtnFace; Kx := (R.Right - R.Left - 80)/MaxX; Ky := (R.Bottom - R.Top - 80)/MaxY; {Ось Po} Canvas.MoveTo(R.Left+10,R.Bottom-30); Canvas.LineTo(R.Right-10,R.Bottom-30); {Ось P2} Canvas.MoveTo(R.Left+60,R.Top+30); Canvas.LineTo(R.Left+60,R.Bottom-30); i := 0; while i*Nx PLines[isP0,5] then PointMin := PLines[isP0,2] else PointMin := PLines[isP0,5]; if PointMin < 0 then PointMin := 0.0; DrawLine(PLines[isP0,1], -(PLines[isP2,1]/PLines[isP0,1]),PLines[isP2,1]); DrawLine(PLines[isP0,2], -(PLines[isP2,2]/PLines[isP0,2]),PLines[isP2,2]); DrawLine(0,1,0); DrawLine(PLines[isP0,4], -(PLines[isP2,4]/PLines[isP0,4]),PLines[isP2,4]); DrawLine(PLines[isP0,5], -(PLines[isP2,5]/PLines[isP0,5]),PLines[isP2,5]); Canvas.Brush.Color := clGreen; Canvas.FloodFill(Round((((PointMax-PointMin)/2)*Kx)+R.Left+60), R.Bottom-55, clBlack, fsBorder); Canvas.Brush.Color := clBtnFace; Canvas.TextOut(R.Right-80, R.Bottom-50, 'P0, TC/M*2'); Canvas.TextOut(R.Left+20, R.Top+10, 'P2, TC/M*2'); end; end; end. unit Edittub; interface uses type TEditDataForm = class(TForm) Panel1: TPanel; rxDBLookupCombo1: TrxDBLookupCombo; TableSTUFF: TTable; DataSourceSTUFF: TDataSource; DBGrid1: TDBGrid; DataSourceDATA: TDataSource; TableDATA: TTable; TableDATAMass: TFloatField; TableDATAR_press: TFloatField; TableDATAR_stretch: TFloatField; TableDATAPuasson: TFloatField; TableDATAR1: TFloatField; TableDATARb: TFloatField; TableDATAR: TFloatField; TableDATAA: TFloatField; TableDATAB: TFloatField; rxDBFilter1: TrxDBFilter; TableDATAStuff: TSmallintField; DBNavigator1: TDBNavigator; procedure rxDBLookupCombo1Change(Sender: TObject); procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); procedure DBGrid1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var implementation {$R *.DFM} uses EditForm; procedure TEditDataForm.rxDBLookupCombo1Change(Sender: TObject);
var procedure TEditDataForm.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); begin case Button of nbInsert: begin EditDataTub(TableDATA, True, TableSTUFF.FieldByName('Code').AsInteger); end; nbEdit: begin EditDataTub(TableDATA, False, TableSTUFF.FieldByName('Code').AsInteger); end; end; end; procedure TEditDataForm.DBGrid1DblClick(Sender: TObject);
begin TableSTUFF.FieldByName('Code').AsInteger); end; end. unit Editform; interface uses type TEdTubForm = class(TForm) DataSource1: TDataSource; Panel1: TPanel; DBEdit1: TDBEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; DBEdit2: TDBEdit; DBEdit3: TDBEdit; Label4: TLabel; Label5: TLabel; Label6: TLabel; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; Label7: TLabel; DBEdit7: TDBEdit; Label8: TLabel; Label9: TLabel; Panel2: TPanel; Panel3: TPanel; DBEdit8: TDBEdit; DBEdit9: TDBEdit; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Table1: TTable; Label10: TLabel; DBText1: TDBText; DataSource2: TDataSource; Query1: TQuery; Query1Material: TStringField; procedure FormCreate(Sender: TObject); public FCode: Integer; function EditTub( Table: TTable; IsNew: Boolean; Code: Integer): Boolean; end; var function EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer): Boolean; implementation {$R *.DFM} function EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer): Boolean;
begin FCode := Code; Result := EditTub(Table, IsNew, Code); finally Free; end; end; function TEdTubForm.EditTub(Table: TTable; IsNew: Boolean; Code: Integer): Boolean; begin if Table nil then DataSource1.DataSet := Table else begin Table1.Open; DataSource1.DataSet := Table1; end; if IsNew then begin DataSource1.DataSet.Append; DataSource1.DataSet.FieldByName('Stuff').AsInteger := Code; end else DataSource1.DataSet.Edit; DataSource1.DataSet.Post else DataSource1.DataSet.Cancel; end; procedure TEdTubForm.FormCreate(Sender: TObject);
begin end. unit EditUser; interface uses type TEditUserDialog = class(TForm) OKBtn: TBitBtn; CancelBtn: TBitBtn; UsersTable: TTable; dsUsers: TDataSource; NameEdit: TDBEdit; FullNameEdit: TDBEdit; GroupBox: TGroupBox; PasswordEdit: TDBEdit; ConfirmPassword: TEdit; Label1: TLabel; Label2: TLabel; LevelGroup: TDBRadioGroup; procedure OKBtnClick(Sender: TObject); procedure CancelBtnClick(Sender: TObject); procedure FormHide(Sender: TObject); private { Private declarations } public { Public declarations } function EditUser(const UserName: string; Table: TTable; IsNew: Boolean): Boolean; end; var function EditUserData(const UserName: string; Table: TTable; IsNew: Boolean): Boolean; implementation uses {$R *.DFM} const function EditUserData(const UserName: string; Table: TTable; IsNew: Boolean): Boolean;
var Table := nil; SUName := glUserName; end; with TEditUserDialog.Create(Application) do try Result := EditUser(SUName, Table, IsNew); finally Free; end; end; { TEditUserDialog } function TEditUserDialog.EditUser(const UserName: string; Table: Ttable; IsNew: Boolean): Boolean;
begin UsersTable.Close; end else begin UsersTable.Open; if UserName '' then begin if not UsersTable.FindKey([UserName]) then raise Exception.Create(SNotFound); end; dsUsers.DataSet := UsersTable; end; if IsNew then dsUsers.DataSet.Append else dsUsers.DataSet.Edit; procedure TEditUserDialog.OKBtnClick(Sender: TObject);
begin if PasswordEdit.Text ConfirmPassword.Text then raise Exception.Create(SNoConfirmPassword); dsUsers.DataSet.Post; procedure TEditUserDialog.CancelBtnClick(Sender: TObject);
begin dsUsers.DataSet.Cancel; procedure TEditUserDialog.FormHide(Sender: TObject);
begin dsUsers.DataSet.Cancel; end. unit Global; interface type const function cUserLevel(Code: Longint): TUserLevel; implementation function cUserLevel(Code: Longint): TUserLevel;
begin Result := TUserLevel(Code); end; end. unit Global; interface type const function cUserLevel(Code: Longint): TUserLevel; implementation function cUserLevel(Code: Longint): TUserLevel;
begin Result := TUserLevel(Code); end; end. unit Main; interface uses type TStaftForm = class(TForm) SpeedBar: TSpeedBar; ExitItem: TSpeedItem; MainMenu: TMainMenu; FileMenu: TMenuItem; InsuranceMenuItem: TMenuItem; FileMenuSeperator: TMenuItem; PrinterSetupMenuItem: TMenuItem; ExitMenuItem: TMenuItem; DictSetupMenu: TMenuItem; UserMenuItem: TMenuItem; WindowMenu: TMenuItem; TileMenuItem: TMenuItem; CascadeMenuItem: TMenuItem; MinimizeAllMenuItem: TMenuItem; ArrangeAllMenuItem: TMenuItem; HelpMenu: TMenuItem; HelpContentsMenuItem: TMenuItem; HelpMenuSeparator: TMenuItem; AboutMenuItem: TMenuItem; ChangePasswordItem: TSpeedItem; PrintSetupItem: TSpeedItem; CalcItem: TSpeedItem; PrinterSetup: TPrinterSetupDialog; TileWindowsItem: TSpeedItem; CascadeWindowsItem: TSpeedItem; HintPanel: TPanel; DBSecurity1: TDBSecurity; Database1: TDatabase; EditItem: TMenuItem; FormPlacement: TFormPlacement; procedure ArrangeAllMenuItemClick(Sender: TObject); procedure TileMenuItemClick(Sender: TObject); procedure CascadeMenuItemClick(Sender: TObject); procedure MinimizeAllMenuItemClick(Sender: TObject); procedure AboutMenuItemClick(Sender: TObject); procedure PrinterSetupMenuItemClick(Sender: TObject); procedure ExitMenuItemClick(Sender: TObject); procedure FormStorageRestorePlacement(Sender: TObject); procedure FormStorageSavePlacement(Sender: TObject); function DBSecurity1CheckUser(UsersTable: TTable; const Password: String): Boolean; procedure UserMenuItemClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure InsuranceMenuItemClick(Sender: TObject); procedure ShowHint(Sender: TObject); procedure EditItemClick(Sender: TObject); private procedure SetUserLevel; procedure UpdateMenuItems(Sender: TObject); function ShowForm(FormClass: TFormClass): TForm; end; var implementation uses About, rxIni, VCLUtils, Global, AppUtils, EditUser, UserList, EditTub, Calc1; {$R *.DFM} const siMDIChilds = 'OpenMDIChilds'; procedure TStaftForm.SetUserLevel; begin case glUserLevel of ulOperator: begin DictSetupMenu.Visible := False; DictSetupMenu.Enabled := False; UserMenuItem.Visible := False; UserMenuItem.Enabled := False; end; ulManager: begin DictSetupMenu.Visible := True; DictSetupMenu.Enabled := True; UserMenuItem.Visible := False; UserMenuItem.Enabled := False; end; ulAdministrator: begin DictSetupMenu.Visible := True; DictSetupMenu.Enabled := True; UserMenuItem.Visible := True; UserMenuItem.Enabled := True; end; end; end; procedure TStaftForm.TileMenuItemClick(Sender: TObject);
begin procedure TStaftForm.CascadeMenuItemClick(Sender: TObject);
begin procedure TStaftForm.MinimizeAllMenuItemClick(Sender: TObject);
var MDIChildren[I].WindowState := wsMinimized; end; procedure TStaftForm.ArrangeAllMenuItemClick(Sender: TObject);
begin procedure TStaftForm.AboutMenuItemClick(Sender: TObject);
begin 'МГГУ', nil, 1, 0, 1996); end; procedure TStaftForm.PrinterSetupMenuItemClick(Sender: TObject);
begin procedure TStaftForm.ExitMenuItemClick(Sender: TObject);
begin function TStaftForm.ShowForm(FormClass: TFormClass): TForm;
var Form := FindForm(FormClass); if Form = nil then Application.CreateForm(FormClass, Form); with Form do begin if WindowState = wsMinimized then WindowState := wsNormal; Show; end; Result := Form; finally StopWait; end; end; procedure TStaftForm.FormStorageRestorePlacement(Sender: TObject);
var SpeedBar.Visible := True; IniFile := TrxIniFile.Create(FormPlacement.IniFileName); try if (glUserLevel in [ulManager, ulAdministrator]) then begin List := TStringList.Create; try IniFile.ReadList(siMDIChilds, List); for I := 0 to List.Count - 1 do begin FormClass := TFormClass(GetClass(List[I])); if FormClass nil then ShowForm(FormClass); end; finally List.Free; end; end; finally IniFile.Free; end; finally StopWait; end; end; procedure TStaftForm.FormStorageSavePlacement(Sender: TObject);
var IniFile.EraseSection(siMDIChilds); List := TStringList.Create; try for I := MDIChildCount - 1 downto 0 do List.Add(MDIChildren[I].ClassName); if List.Count > 0 then IniFile.WriteList(siMDIChilds, List); finally List.Free; end; finally IniFile.Free; end; end; function TStaftForm.DBSecurity1CheckUser(UsersTable: TTable;
const .AsInteger); Result := (glUserLevel ulInvalid); end; if Result then SetUserLevel; end; procedure TStaftForm.UserMenuItemClick(Sender: TObject);
begin procedure TStaftForm.ShowHint(Sender: TObject);
begin procedure TStaftForm.UpdateMenuItems(Sender: TObject);
begin procedure TStaftForm.FormCreate(Sender: TObject);
begin procedure TStaftForm.FormDestroy(Sender: TObject);
begin procedure TStaftForm.InsuranceMenuItemClick(Sender: TObject);
begin procedure TStaftForm.EditItemClick(Sender: TObject);
begin end. unit UserList; interface uses type TUserListForm = class(TForm) UsersTable: TTable; dsUsers: TDataSource; UsersGrid: TrxDBGrid; UsersTablePassword: TStringField; Panel1: TPanel; DBNavigator: TDBNavigator; FormPlacement: TFormPlacement; UsersTableID: TFloatField; UsersTableUserName: TStringField; UsersTableFullName: TStringField; UsersTableUserLevel: TFloatField; BitBtn1: TBitBtn; procedure DBNavigatorClick(Sender: TObject; Button: TNavigateBtn); procedure UsersGridDblClick(Sender: TObject); procedure FormPlacementSavePlacement(Sender: TObject); procedure FormPlacementRestorePlacement(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); end; var implementation uses EditUser, IniFiles, Global; const {$R *.DFM} procedure TUserListForm.DBNavigatorClick(Sender: TObject; Button: TNavigateBtn); begin case Button of nbInsert: begin EditUserData('', UsersTable, True); end; nbEdit: begin EditUserData('', UsersTable, False); end; end; end; procedure TUserListForm.UsersGridDblClick(Sender: TObject);
begin procedure TUserListForm.FormPlacementSavePlacement(Sender: TObject);
var TrxDBGrid(Components[I]).SaveLayout(IniFile); end; finally IniFile.Free; end; end; procedure TUserListForm.FormPlacementRestorePlacement(Sender: TObject);
var TrxDBGrid(Components[I]).RestoreLayout(IniFile); end; finally IniFile.Free; end; end; procedure TUserListForm.FormCreate(Sender: TObject);
begin if not (glUserLevel in [ulAdministrator]) then begin raise Exception.Create(SAccessDenied); end; procedure TUserListForm.FormClose(Sender: TObject;
var end. program Shaft; uses {$R *.RES} begin 5. Список использованной литературы. 1. Баклашов И.В., Картозия Б.А. “Механика подземных сооружений и конструкций крепей” - М., Недра, 1992, 543 с. |
ИНТЕРЕСНОЕ | |||
|