![]() |
|
|
Курсовая работа: Технология строительства метрополитенаfunction EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer): Boolean; implementation {$R *.DFM} function EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer): Boolean; begin Result := False; with TEdTubForm.Create(Application) do try 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; Result := ShowModal = mrOk; if Result then DataSource1.DataSet.Post else DataSource1.DataSet.Cancel; end; procedure TEdTubForm.FormCreate(Sender: TObject); begin Query1.Active := False; Query1.ParamByName('St').AsInteger := FCode; Query1.Active := True; end; end. unit EditUser; interface uses SysUtils, WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons, StdCtrls, ExtCtrls, DBCtrls, Mask, DB, DBTables; 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 EditUserDialog: TEditUserDialog; function EditUserData(const UserName: string; Table: TTable; IsNew: Boolean): Boolean; implementation uses Global, Crypt; {$R *.DFM} const SNotFound = 'Записей не обнаружено'; SNoConfirmPassword = 'Вы ввели разные пароли. Проверьте правильность ввода';
function EditUserData(const UserName: string; Table: TTable; IsNew: Boolean): Boolean; var SUName: string; begin Result := False; SUName := UserName; if glUserLevel <> ulAdministrator then begin 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 NameEdit.Enabled := (glUserLevel = ulAdministrator); LevelGroup.Enabled := (glUserLevel = ulAdministrator); if Table <> nil then begin dsUsers.DataSet := Table; 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; ConfirmPassword.Text := PasswordEdit.Text; Result := ShowModal = mrOk; end; procedure TEditUserDialog.OKBtnClick(Sender: TObject); begin if PasswordEdit.Text <> ConfirmPassword.Text then raise Exception.Create(SNoConfirmPassword); dsUsers.DataSet.Post; ModalResult := mrOk; end; procedure TEditUserDialog.CancelBtnClick(Sender: TObject); begin dsUsers.DataSet.Cancel; ModalResult := mrCancel; end; procedure TEditUserDialog.FormHide(Sender: TObject); begin dsUsers.DataSet.Cancel; UsersTable.Close; end; end. unit Global; interface type TUserLevel = (ulInvalid, ulOperator, ulManager, ulAdministrator); const InvalidID = 0; glUserLevel: TUserLevel = ulInvalid; glUserName: string = ''; glUserID: Longint = InvalidID; function cUserLevel(Code: Longint): TUserLevel; implementation function cUserLevel(Code: Longint): TUserLevel; begin Result := ulInvalid; if (Code in [Integer(Low(TUserLevel))..Integer(High(TUserLevel))]) then Result := TUserLevel(Code); end; end.
unit Global; interface type TUserLevel = (ulInvalid, ulOperator, ulManager, ulAdministrator); const InvalidID = 0; glUserLevel: TUserLevel = ulInvalid; glUserName: string = ''; glUserID: Longint = InvalidID; function cUserLevel(Code: Longint): TUserLevel; implementation function cUserLevel(Code: Longint): TUserLevel; begin Result := ulInvalid; if (Code in [Integer(Low(TUserLevel))..Integer(High(TUserLevel))]) then Result := TUserLevel(Code); end; end.
unit Main; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, SpeedBar, Menus, ExtCtrls, Placemnt, DB, DBSecur, DBTables; 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 StaftForm: TStaftForm; 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 Tile; end; procedure TStaftForm.CascadeMenuItemClick(Sender: TObject); begin Cascade; end; procedure TStaftForm.MinimizeAllMenuItemClick(Sender: TObject); var I: Integer; begin for I := MDIChildCount - 1 downto 0 do MDIChildren[I].WindowState := wsMinimized; end; procedure TStaftForm.ArrangeAllMenuItemClick(Sender: TObject); begin ArrangeIcons; end; procedure TStaftForm.AboutMenuItemClick(Sender: TObject); begin ShowAboutDialog('Расчет тюбинговой обделки', 'Королев А.В.', 'МГГУ', nil, 1, 0, 1996); end; procedure TStaftForm.PrinterSetupMenuItemClick(Sender: TObject); begin PrinterSetup.Execute; end; procedure TStaftForm.ExitMenuItemClick(Sender: TObject); begin Close; end; function TStaftForm.ShowForm(FormClass: TFormClass): TForm; var Form: TForm; begin Result := nil; StartWait; try 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 IniFile: TrxIniFile; List: TStrings; I: Integer; FormClass: TFormClass; Form: TForm; begin StartWait; try 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: TrxIniFile; List: TStrings; I: Integer; begin IniFile := TrxIniFile.Create(FormPlacement.IniFileName); try 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 Password: String): Boolean; begin Result := (Password = UsersTable.FieldByName('Password').AsString); if Result then begin glUserName := UsersTable.FieldByName('UserName').AsString; glUserID := UsersTable.FieldByName('ID').AsInteger; glUserLevel := cUserLevel(UsersTable.FieldByName('UserLevel') .AsInteger); Result := (glUserLevel <> ulInvalid); end; if Result then SetUserLevel; end; procedure TStaftForm.UserMenuItemClick(Sender: TObject); begin ShowForm(TUserListForm); end; procedure TStaftForm.ShowHint(Sender: TObject); begin HintPanel.Caption := Application.Hint; end; procedure TStaftForm.UpdateMenuItems(Sender: TObject); begin { Enable or disable menu items and buttons } CascadeMenuItem.Enabled := MDIChildCount > 0; TileMenuItem.Enabled := MDIChildCount > 0; ArrangeAllMenuItem.Enabled := MDIChildCount > 0; MinimizeAllMenuItem.Enabled := MDIChildCount > 0; TileWindowsItem.Enabled := MDIChildCount > 0; CascadeWindowsItem.Enabled := MDIChildCount > 0; end; procedure TStaftForm.FormCreate(Sender: TObject); begin Application.OnHint := ShowHint; Screen.OnActiveFormChange := UpdateMenuItems; SetAutoSubClass(True); { set wait cursor to SQL } WaitCursor := crSQLWait; { register classes of MDI-child forms } {RegisterClasses([TDictForm, TRatesForm, TItemReportForm]);} end; procedure TStaftForm.FormDestroy(Sender: TObject); begin Screen.OnActiveFormChange := nil; Application.HelpCommand(HELP_QUIT,0); end; procedure TStaftForm.InsuranceMenuItemClick(Sender: TObject); begin Form1.ShowModal; end; procedure TStaftForm.EditItemClick(Sender: TObject); begin EditDataForm.Show; end; end. unit UserList; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, ExtCtrls, DBTables, DB, Grids, DBGrids, RXDBCtrl, Placemnt, StdCtrls, Buttons; 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 UserListForm: TUserListForm; implementation uses EditUser, IniFiles, Global; const SAccessDenied = 'Недостаточно прав. Доступ запрещен'; {$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 EditUserData('', UsersTable, False); end; procedure TUserListForm.FormPlacementSavePlacement(Sender: TObject); var IniFile: TIniFile; I: Integer; begin IniFile := TIniFile.Create(FormPlacement.IniFileName); try for I := 0 to ComponentCount - 1 do begin if Components[I] is TrxDBGrid then TrxDBGrid(Components[I]).SaveLayout(IniFile); end; finally IniFile.Free; end; end; procedure TUserListForm.FormPlacementRestorePlacement(Sender: TObject); var IniFile: TIniFile; I: Integer; begin IniFile := TIniFile.Create(FormPlacement.IniFileName); try for I := 0 to ComponentCount - 1 do begin if Components[I] is TrxDBGrid then 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; UsersTable.Open; end; procedure TUserListForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; end. program Shaft; uses Forms, Main in 'MAIN.PAS' {StaftForm}, Global in 'GLOBAL.PAS', EditUser in 'EDITUSER.PAS', UserList in 'USERLIST.PAS' {UserListForm}, Edittub in 'EDITTUB.PAS' {EditDataForm}, Editform in 'EDITFORM.PAS' {EdTubForm}, Calc1 in 'CALC1.PAS' {Form1}, Draw in 'DRAW.PAS' {DrawForm}; {$R *.RES} begin Application.CreateForm(TStaftForm, StaftForm); Application.CreateForm(TEditDataForm, EditDataForm); Application.CreateForm(TEdTubForm, EdTubForm); Application.CreateForm(TForm1, Form1); Application.CreateForm(TDrawForm, DrawForm); Application.Run; end. 5. Список использованной литературы. 1. Баклашов И.В., Картозия Б.А. “Механика подземных сооружений и конструкций крепей” - М., Недра, 1992, 543 с. 2. Насонов И.Д., Федюкин В.А., Шуплик М.Н., “Технология строительства подземных сооружений” - М., Недра, 1992, 285 с. 3. Насонов И.Д., Шуплик М.Н. “Закономерности формирования ледопородных ограждений при сооружении стволов шахт” - М., Недра, 1976, 237 с. 4. Храпов В.Г. “Тоннели и метрополитены” - М., Транспорт, 1989, 383 с. 5. Белый В.В. “Справочник инженера шахтостроителя” в 2-х томах - М., 1983 6. Туренский Н.Г., Ледяев А.П. “Строительство тоннелей и метрополитенов” - М., Транспорт, 1992, 264 с. 7. Богомолов Г.М., Голицынский Д.М. Сеславинский С.И. “Справочник инженера тоннельщика” - М., Транспорт, 1993, 389 с. |
![]() |
||
НОВОСТИ | ![]() |
![]() |
||
ВХОД | ![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |