Разработка модуля поддержки процессов организации повышения квалификации преподавателей в рамках АСУ МИИТ
Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.07.2013 |
Размер файла | 4,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
procedure TForm_Dictionaries.Allow_Delete(TV: TcxCustomGridTableView; Roles: array of boolean);
var i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
FSqlData_TableView.ActionDelete.Enabled := (TV.Controller.SelectedRecordCount > 0)
and Allow;
end; // 1
end;
procedure TForm_Dictionaries.Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;
ARecordIndex: Integer; var ExchangeParameters: OleVariant);
begin
if Sender.GridTableView = tv_spec
then with Sender.GridTableView.DataController do
ExchangeParameters := CreateVarAr([Values[FocusedRecordIndex, tv_Spec_ID.Index]]);
end;
procedure TForm_Dictionaries.tv_ed_groupEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
Allow_Editing(Sender, [REdit_Groups]);
end;
procedure TForm_Dictionaries.tv_ed_groupKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_INSERT
then Allow_Insert(tv_ed_group, [REdit_Groups]);
end;
procedure TForm_Dictionaries.tv_ed_groupMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight
then Allow_Insert(tv_ed_group, [REdit_Groups]);
end;
procedure TForm_Dictionaries.tv_ed_groupSelectionChanged(
Sender: TcxCustomGridTableView);
begin
if Sender = TTree_Commission
then with TTree_Commission.Controller do
Get_SqlData_cxGrid(TTree_Commission).ActionDelete.Enabled :=
(SelectedRowCount > 0)
and Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled
And Is_Value(Tree_Commission_Status_Order, '2', False)
and (vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '', '902'
, [VarToStr(SelectedRows[0].Values[Tree_Commission_ID_MT.Index])]
, [VarToStr(SelectedRows[0].Values[Tree_Commission_ID_MO.Index])]
, [VarToStr(SelectedRows[0].Values[Tree_Commission_ID_ERP.Index])]))
else
if Sender = TTree_Members
then with TTree_Members.Controller do
Get_SqlData_cxGrid(TTree_Members).ActionDelete.Enabled :=
(SelectedRowCount > 0)
and Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled
And Is_Value(Tree_Members_Start, '2', False)
and (vnSessionAgent.IsDBA or vnSessionAgent.IsRoleAccessible('', '', '902'
, [VarToStr(SelectedRows[0].Values[Tree_Members_ID_MT.Index])]
, [VarToStr(SelectedRows[0].Values[Tree_Members_ID_MO.Index])]
, [VarToStr(SelectedRows[0].Values[Tree_Members_ID_ERP.Index])]))
else Allow_Delete(Sender, [REdit_Groups]);
end;
procedure TForm_Dictionaries.tv_SpecEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
Allow_Editing(Sender,[REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_SpecKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_INSERT
then Allow_Insert(tv_spec, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_SpecMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight
then Allow_Insert(tv_spec, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_SpecSelectionChanged(Sender: TcxCustomGridTableView);
begin
Allow_Delete(Sender, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_spec_divEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
Allow_Editing(Sender, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_spec_divKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_INSERT
then Allow_Insert(tv_spec_div, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_spec_divMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight
then Allow_Insert(tv_spec_div, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_spec_divSelectionChanged(
Sender: TcxCustomGridTableView);
begin
Allow_Delete(Sender, [REdit_Spec]);
end;
procedure TForm_Dictionaries.tv_spec_div_institutePropertiesInitPopup(Sender: TObject);
begin
Fill_tv_intitutesExecute(self);
end;
procedure TForm_Dictionaries.tv_spec_div_kind_trainingPropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_kind_trainingExecute(self);
end;
procedure TForm_Dictionaries.tv_spec_div_name_divPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_org_divExecute(self);
end;
procedure TForm_Dictionaries.tv_spec_div_name_specPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_specExecute(self);
end;
procedure TForm_Dictionaries.tv_spec_div_sourcePropertiesInitPopup(Sender: TObject);
begin
Fill_tv_source_finansingExecute(self);
end;
{ Настройка списков }
procedure TForm_Dictionaries.Init(AReg_Path: String = Reg_Path; AForm_SE: TForm_SE = nil);
begin
DateEdit_New_Commission_Start.Date := Date;
DateEdit_New_Member_Start.Date := Date;
if AForm_SE <> nil then
Current_Form_SE := AForm_SE;
if not assigned(Current_Form_SE) then
Current_Form_SE := TForm_SE.Create(self);
Curr_Reg_Path := AReg_Path;
{ Описание для различных оберток }
// *****************************************************************************
cW_Institute_Filter := TContainerWrappers.Create;
cW_Institute_Filter.AddPopupEdit(PopupEdit_Filter_Org, false, false, cxGrid_Institutes,
tv_institutes ,tv_institutes_ID, [tv_institutes_Abbr, tv_institutes_Name], '');
cW_Institute_Filter.OnChangedValueWrapper := DoChanged_cW_Intitute_Filter;;
// *****************************************************************************
// *****************************************************************************
cW_New_Spec := TContainerWrappers.Create;
cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name, true, false, '');
cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Quality, false, false, '');
cW_New_Spec.OnChangeWrapper := DoChanged_cW_New_Spec;
// *****************************************************************************
// *****************************************************************************
cW_New_Ed_Group := TContainerWrappers.Create;
cW_New_Ed_Group.AddCustomEdit(cxTextEdit_New_Ed_Group_Name, true, false, '');
cW_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_Start, true, false, '');
cW_New_Ed_Group.AddCustomEdit(cxDateEdit_New_Ed_Group_D_End, false, false, '');
cW_New_Ed_Group.OnChangeWrapper := DoChanged_cW_New_Ed_Group;
// *****************************************************************************
// *****************************************************************************
cW_New_Spec_Div := TContainerWrappers.Create;
cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Institute, true, false, cxGrid_Institutes,
tv_institutes, tv_institutes_ID, [tv_institutes_Abbr, tv_institutes_Name], '');
cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Div, true, false, cxGrid_Org_Division,
tv_Org_Division, tv_Org_Division_ID, [tv_Org_Division_Abbr, tv_Org_Division_Name], '');
cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_Spec, true, false, cxGrid_Spec,
tv_spec, tv_Spec_ID, [tv_Spec_Name], '');
cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_KT, true, false, cxGrid_Kind_Training,
tv_Kind_Training, tv_Kind_Training_IDK_TRAINING, [tv_Kind_Training_Name], '');
cW_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_Start, true, false, '');
cW_New_Spec_Div.AddCustomEdit(cxDateEditNew_Spec_Div_D_End, false, false, '');
cW_New_Spec_Div.AddPopupEdit(cxPopupEditNew_Spec_Div_SF, false, false, cxGrid_Source_Financing,
tv_Source_Financing, tv_Source_Financing_ID, [tv_Source_Financing_Name], '');
cW_New_Spec_Div.OnChangeWrapper := DoChanged_cW_New_Spec_Div;
// *****************************************************************************
// ---------------------------------------------
// добавление подразделение-организаторов обучения
// ---------------------------------------------
if Get_SqlData_cxGrid(tv_Org_Division) = nil
then with TSqlData_cxGridTableView.Create(tv_Org_Division)
do begin
Table_Name := 'Организаторы обучения';
Editing := false;
GUID_Select := Get_List_Divisions;
StepOnTopDataRecordMode := True;
Params := CreateVarAr([IDK_Level_Spec]);
Select_Columns.Add(tv_Org_Division_Abbr);
Select_Columns.Add(tv_Org_Division_Name);
Select_Columns.Add(tv_Org_Division_ID);
Key_Columns.Add(tv_Org_Division_ID);
Stat_Column := tv_Org_Division_Abbr;
NameColumnsForPopupEdit.Add(tv_Org_Division_Abbr);
NameColumnsForPopupEdit.Add(tv_Org_Division_Name);
end;
// ---------------------------------------------
// ---------------------------------------------
// добавление институтов
// ---------------------------------------------
if Get_SqlData_cxGrid(tv_institutes) = nil
then with TSqlData_cxGridTableView.Create(tv_institutes)
do begin
Editing := false;
Table_Name := 'Институты';
GUID_Select := Get_List_Institutes;
StepOnTopDataRecordMode := True;
Params := CreateVarAr([IDK_Level_Spec]);
Select_Columns.Add(tv_institutes_Abbr);
Select_Columns.Add(tv_institutes_Name);
Select_Columns.Add(tv_institutes_ID);
Key_Columns.Add(tv_institutes_ID);
Stat_Column := tv_institutes_Abbr;
NameColumnsForPopupEdit.Add(tv_institutes_Abbr);
NameColumnsForPopupEdit.Add(tv_institutes_Name);
end;
// ---------------------------------------------
// ---------------------------------------------
// добавление специальностей
// ---------------------------------------------
if Get_SqlData_cxGrid(tv_Spec) = nil
then with TSqlData_cxGridTableView.Create(tv_Spec)
do begin
Editing := true;
Table_Name := 'Специальности';
GUID_Select := Get_List_Spec_By_Params;
GUID_Update := d_P_SPECIALITY;
GUID_Delete := Delete_Spec;
StepOnTopDataRecordMode := True;
OnBefore_Delete_Exchange := Before_Delete_Exchange;
Params := CreateVarAr([IDK_Level_Spec,'']);
Select_Columns.Add(tv_Spec_Name, 2);
Select_Columns.Add(tv_Spec_Q, 1);
Select_Columns.Add(tv_Spec_ID, 0);
Select_Columns.Add(tv_Spec_IDK_Level_Spec, 6);
Select_Columns.Add(tv_Spec_id_discipline);
Select_Columns.Add(tv_Spec_idk_discipline);
Key_Columns.Add(tv_Spec_ID, 0);
Stat_Column := tv_Spec_Name;
NameColumnsForPopupEdit.Add(tv_Spec_Name);
ActionInsert.OnExecute := Action_Insert_Spec.OnExecute;
end;
// ---------------------------------------------
// добавление организаторов обучения (специальности подразделений)
// ---------------------------------------------
if Get_SqlData_cxGrid(tv_spec_div) = nil
then with TSqlData_cxGridTableView.Create(tv_spec_div)
do begin
Editing := true;
Single := false;
Table_Name := 'Специальности подразделений';
GUID_Select := Spec_div;
GUID_Update := d_P_SPECIALITIES_DIVISION;
StepOnTopDataRecordMode := True;
Params := CreateVarAr([IDK_Level_Spec,'']);
Stat_Column := tv_spec_div_institute;
NameColumnForPopupEdit := tv_spec_div_institute;
with Select_Columns
do begin
Add(tv_spec_div_name_spec,1);
Add(tv_spec_div_name_div,2);
Add(tv_spec_div_kind_training,3);
Add(tv_spec_div_institute,6);
Add(tv_spec_div_source,12);
Add(tv_spec_div_d_start,4);
Add(tv_spec_div_d_end,5);
Add(tv_spec_div_id_spec_div,0);
Add(tv_spec_div_id_spec,1);
Add(tv_spec_div_id_d,2);
Add(tv_spec_div_idk_training,3);
Add(tv_spec_div_id_d_institute,6);
Add(tv_spec_div_id_source,12);
Add(tv_spec_div_idk_level_formation,8);
end;
Key_Columns.Add(tv_spec_div_id_spec_div,0);
Clear_Columns.Add(tv_spec_div_source,12);
with PopupColumnsList.Add(tv_spec_div_institute)
do begin
SelfKeyColumn := tv_spec_div_id_d_institute;
PopupKeyColumn := tv_institutes_ID;
PopupNameColumn := tv_institutes_Name;
end;
with PopupColumnsList.Add(tv_spec_div_name_div)
do begin
SelfKeyColumn := tv_spec_div_id_d;
PopupKeyColumn := tv_Org_Division_ID;
PopupNameColumn := tv_Org_Division_Name;
end;
with PopupColumnsList.Add(tv_spec_div_name_spec)
do begin
SelfKeyColumn := tv_spec_div_id_spec;
PopupKeyColumn := tv_Spec_ID;
PopupNameColumn := tv_Spec_Name;
end;
with PopupColumnsList.Add(tv_spec_div_kind_training)
do begin
SelfKeyColumn := tv_spec_div_idk_training;
PopupKeyColumn := tv_Kind_Training_IDK_TRAINING;
PopupNameColumn := tv_Kind_Training_Name;
end;
with PopupColumnsList.Add(tv_spec_div_source)
do begin
SelfKeyColumn := tv_spec_div_id_source;
PopupKeyColumn := tv_Source_Financing_ID;
PopupNameColumn := tv_Source_Financing_Name;
end;
with Insert_Columns
do begin
Add(tv_spec_div_id_spec,1);
Add(tv_spec_div_id_d,2);
Add(tv_spec_div_idk_training,3);
Add(tv_spec_div_d_start,4);
Add(tv_spec_div_d_end,5);
Add(tv_spec_div_id_d_institute,6);
Add(tv_spec_div_idk_level_formation,8);
Add(tv_spec_div_id_source,12);
end;
ActionInsert.Visible := True;
ActionInsert.OnExecute := Action_Insert_Spec_Div.OnExecute;
PopupActions.Add(ActionInsert);
PopupActions.Add(ActionDelete);
PopupActions.Add(nil);
PopupActions.Add(Clear_Columns.ClearActions[tv_spec_div_source]);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
LogicMode := lmLastChoice;
OnChoiceGridRecord := OnChoiceGridRecord_tv_spec_div;
end;
// ---------------------------------------------
//------------------------------------------------------------
//Вид обучения
with TSqlData_cxGridTableView.Create(tv_Kind_Training)
do begin
Editing:=False;
Table_Name:='Виды обучения';
GUID_Select:=Kind_Training;
StepOnTopDataRecordMode := True;
Single:=False;
with Select_Columns
do begin
Add(tv_Kind_Training_IDK_TRAINING);
Add(tv_Kind_Training_Name);
end;
Key_Columns.Add(tv_Kind_Training_IDK_TRAINING);
Stat_Column:=tv_Kind_Training_Name;
NameColumnForPopupEdit:=tv_Kind_Training_Name;
end;
//-----------------------------------------------------------
//------------------------------------------------------------
//Вид уровня образования
with TSqlData_cxGridTableView.Create(tv_klf)
do begin
Editing:=False;
Table_Name:='Виды уровня образования';
GUID_Select:=K_L_F;
StepOnTopDataRecordMode := True;
Single:=False;
with Select_Columns
do begin
Add(tv_klf_name);
Add(tv_klf_idk_lf);
Add(tv_klf_qualifer);
end;
Key_Columns.Add(tv_klf_idk_lf);
Stat_Column := tv_klf_name;
NameColumnForPopupEdit := tv_klf_name;
end;
//-----------------------------------------------------------
//-----------------------------------------
//Источник финансирования
if Get_SqlData_cxGrid(tv_Source_Financing) = nil
then with TSqlData_cxGridTableView.Create(tv_Source_Financing)
do begin
Table_Name:='Источники финансирования';
GUID_Select:=S_F;
StepOnTopDataRecordMode := True;
Editing := false;
ParametersCount := 1;
Select_Columns.Add(tv_Source_Financing_Abbreviation);
Select_Columns.Add(tv_Source_Financing_Name);
Select_Columns.Add(tv_Source_Financing_Abbr_Div);
Select_Columns.Add(tv_Source_Financing_Division);
Select_Columns.Add(tv_Source_Financing_Kind_Source);
Select_Columns.Add(tv_Source_Financing_Activity);
Select_Columns.Add(tv_Source_Financing_Date_Close);
Select_Columns.Add(tv_Source_Financing_ID);
Select_Columns.Add(tv_Source_Financing_ID_D);
Select_Columns.Add(tv_Source_Financing_ID_Kind_Source);
Select_Columns.Add(tv_Source_Financing_ID_Activity);
Key_Columns.Add(tv_Source_Financing_ID);
PopupActions.Add(ActionUpdate);
Stat_Column:=tv_Source_Financing_Abbreviation;
NameColumnForPopupEdit:=tv_Source_Financing_Name;
end;
//------------------------------------------------------------
// ---------------------------------------------
//Учебные группы
with TSqlData_cxGridTableView.Create(tv_ed_group)
do begin
Editing:=True;
Table_Name:='Учебные группы';
Params := CreateVarAr(['']);
GUID_Select := Ed_Groups;
GUID_Update := d_P_EDUCATIONAL_GROUP;
StepOnTopDataRecordMode := True;
Single:=False;
with Select_Columns
do begin
Add(tv_ed_group_name,1);
Add(tv_ed_group_kind_group,8);
Add(tv_ed_group_d_start,4);
Add(tv_ed_group_d_end,5);
Add(tv_ed_group_id_ed_group,0);
Add(tv_ed_group_id_spec_div,2);
Add(tv_ed_group_idk_group,8);
Add(tv_ed_group_level_group,3);
end;
with Insert_Columns
do begin
Add(tv_ed_group_name,1);
Add(tv_ed_group_id_spec_div,2);
Add(tv_ed_group_level_group,3);
Add(tv_ed_group_d_start,4);
Add(tv_ed_group_d_end,5);
Add(tv_ed_group_idk_group,8);
end;
Key_Columns.Add(tv_ed_group_id_ed_group,0);
ActionInsert.OnExecute := Action_Insert_Ed_Group.OnExecute;
PopupActions.Add(ActionInsert);
PopupActions.Add(ActionDelete);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
Stat_Column := tv_ed_group_name;
NameColumnForPopupEdit := tv_ed_group_name;
end;
// Комиссии
if Get_SqlData_cxGrid(TTree_Commission) = nil
then with TSqlData_cxGridTableView.Create(TTree_Commission)
do begin
Table_Name := TTree_Commission.Bands.Items[0].Caption;
GUID_Select := Get_List_Commissions_By_ID_D_And_ID_Spec;
GUID_Update := d_P_COMMISSION;
StepOnTopDataRecordMode := True;
LogicMode := lmLastChoice;
OnChoiceGridRecord := OnChoiceGridRecord_tv_spec_div;
ParametersCount := 2;
RequiredParemeters.Add([1, 2]);
Select_Columns.Add(Tree_Commission_Order);
Select_Columns.Add(Tree_Commission_Kind);
Select_Columns.Add(Tree_Commission_User);
Select_Columns.Add(Tree_Commission_Start, 4);
Select_Columns.Add(Tree_Commission_End, 5);
Select_Columns.Add(Tree_Commission_ID_Paragraph, 2);
Select_Columns.Add(Tree_Commission_ID_Order, 2);
Select_Columns.Add(Tree_Commission_IDK_Order, 2);
Select_Columns.Add(Tree_Commission_Status_Order, 2);
Select_Columns.Add(Tree_Commission_ID_ERP, 2);
Select_Columns.Add(Tree_Commission_ID_MT, 2);
Select_Columns.Add(Tree_Commission_ID_MO, 2);
Select_Columns.Add(Tree_Commission_ID_Spec, 8);
Select_Columns.Add(Tree_Commission_ID_D, 9);
Select_Columns.Add(Tree_Commission_ID, 1);
Select_Columns.Add(Tree_Commission_ID_Kind, 3);
Key_Columns.Add(Tree_Commission_ID, 1);
Insert_Columns.Add(Tree_Commission_ID_Paragraph, 2);
Insert_Columns.Add(Tree_Commission_ID_Spec, 8);
Insert_Columns.Add(Tree_Commission_ID_D, 9);
Insert_Columns.Add(Tree_Commission_ID_Kind, 3);
Insert_Columns.Add(Tree_Commission_Start, 4);
Insert_Columns.Add(Tree_Commission_End, 5);
OptionsOrder.Column_ID_order := Tree_Commission_ID_Order;
OptionsOrder.Column_ID_paragraph := Tree_Commission_ID_Paragraph;
OptionsOrder.Column_IDk_order := Tree_Commission_IDK_Order;
OptionsOrder.Column_ID_erp_user := Tree_Commission_ID_ERP;
OptionsOrder.Column_Status_Order := Tree_Commission_Status_Order;
OptionsOrder.Column_User_Name := Tree_Commission_User;
OptionsOrder.Column_Status_Text := Tree_Commission_Order;
OptionsOrder.Column_name_Kind_paragraph := Tree_Commission_Kind;
PopupActions.Add(ActionInsert);
PopupActions.Add(ActionDelete);
PopupActions.Add(nil);
PopupActions.Add(OptionsOrder.ActionNavigate);
PopupActions.Add(OptionsOrder.ActionPreview);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
Stat_Column := Tree_Commission_Order;
NameColumnForPopupEdit := Tree_Commission_Order;
ActionInsert.OnExecute := Action_New_Commission.OnExecute;
cW_New_Commission := TContainerWrappers.Create;
cW_New_Commission.AddButtonOrderEdit(ButtonEdit_New_Commission, True, False, ''
, ['306']
, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil, nil]);
cW_New_Commission.AddCustomEdit(DateEdit_New_Commission_Start, true, false, '');
cW_New_Commission.AddCustomEdit(DateEdit_New_Commission_End, false, false, '');
cW_New_Commission.ActionEnter := Action_Insert_New_Commission;
end;
// Должности в комиссиях
if Get_SqlData_cxGrid(TTree_Post) = nil
then with TSqlData_cxGridTableView.Create(TTree_Post)
do begin
Table_Name := TTree_Post.Bands.Items[0].Caption;
GUID_Select := Get_Posts_For_Members;
StepOnTopDataRecordMode := True;
Editing := false;
Select_Columns.Add(Tree_Post_Name);
Select_Columns.Add(Tree_Post_ID);
Key_Columns.Add(Tree_Post_ID);
PopupActions.Add(ActionUpdate);
Stat_Column := Tree_Post_Name;
NameColumnForPopupEdit := Tree_Post_Name;
end;
// Члены Комиссии
if Get_SqlData_cxGrid(TTree_Members) = nil
then with TSqlData_cxGridTableView.Create(TTree_Members)
do begin
Table_Name := TTree_Members.Bands.Items[0].Caption;
GUID_Select := Get_Members_Commission_By_ID;
GUID_Update := d_P_COMMISSION_MEMBERS;
StepOnTopDataRecordMode := True;
ParametersCount := 1;
RequiredParemeters.Add([1]);
Select_Columns.Add(Tree_Members_Order);
Select_Columns.Add(Tree_Members_Kind);
Select_Columns.Add(Tree_Members_Post, 7);
Select_Columns.Add(Tree_Members_FIO, 1);
Select_Columns.Add(Tree_Members_User, 3);
Select_Columns.Add(Tree_Members_Start, 4);
Select_Columns.Add(Tree_Members_End, 6);
Select_Columns.Add(Tree_Members_ID_Paragraph, 3);
Select_Columns.Add(Tree_Members_ID_Order, 3);
Select_Columns.Add(Tree_Members_IDK_Order, 3);
Select_Columns.Add(Tree_Members_Status_Order, 3);
Select_Columns.Add(Tree_Members_ID_ERP, 3);
Select_Columns.Add(Tree_Members_ID_MT, 3);
Select_Columns.Add(Tree_Members_ID_MO, 3);
Select_Columns.Add(Tree_Members_ID_Post, 7);
Select_Columns.Add(Tree_Members_ID_Commission, 2);
Select_Columns.Add(Tree_Members_ID_E, 1);
Select_Columns.Add(Tree_Members_ID, 0);
Key_Columns.Add(Tree_Members_ID, 0);
Insert_Columns.Add(Tree_Members_ID_Paragraph, 3);
Insert_Columns.Add(Tree_Members_ID_Commission, 2);
Insert_Columns.Add(Tree_Members_ID_Post, 7);
Insert_Columns.Add(Tree_Members_ID_E, 1);
Insert_Columns.Add(Tree_Members_Start, 4);
Insert_Columns.Add(Tree_Members_End, 6);
OptionsOrder.Column_ID_order := Tree_Members_ID_Order;
OptionsOrder.Column_ID_paragraph := Tree_Members_ID_Paragraph;
OptionsOrder.Column_IDk_order := Tree_Members_IDK_Order;
OptionsOrder.Column_ID_erp_user := Tree_Members_ID_ERP;
OptionsOrder.Column_Status_Order := Tree_Members_Status_Order;
OptionsOrder.Column_User_Name := Tree_Members_User;
OptionsOrder.Column_Status_Text := Tree_Members_Order;
OptionsOrder.Column_name_Kind_paragraph := Tree_Members_Kind;
PopupActions.Add(ActionInsert);
PopupActions.Add(ActionDelete);
PopupActions.Add(nil);
PopupActions.Add(OptionsOrder.ActionNavigate);
PopupActions.Add(OptionsOrder.ActionPreview);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
with PopupColumnsList.Add(Tree_Members_Post) do
begin
SelfKeyColumn := Tree_Members_ID_Post;
PopupKeyColumn := Tree_Post_ID;
PopupNameColumn := Tree_Post_Name;
end;
with PopupColumnsList.Add(Tree_Members_FIO) do
begin
SelfKeyColumn := Tree_Members_ID_E;
PopupKeyColumn := Current_Form_SE.cxGrid_FIO_ID_E;
PopupNameColumn := Current_Form_SE.cxGrid_FIO_Full;
end;
Stat_Column := Tree_Members_Post;
ActionInsert.OnExecute := Action_New_Member.OnExecute;
TcxPopupEditProperties(Tree_Members_FIO.Properties).PopupControl :=
Current_Form_SE;
PopupEdit_New_Member_FIO.Properties.PopupControl := Current_Form_SE;
cw_New_Member := TContainerWrappers.Create;
cw_New_Member.AddButtonOrderEdit(ButtonEdit_New_Member, True, False, ''
, ['306']
, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil, nil]);
cw_New_Member.AddPopupEdit(PopupEdit_New_Member_FIO, True, False
, Current_Form_SE.cxGrid1, Current_Form_SE.cxGrid_FIO
, Current_Form_SE.cxGrid_FIO_ID_E, [Current_Form_SE.cxGrid_FIO_Full], '');
cw_New_Member.AddPopupEdit(PopupEdit_New_Member_Post, True, False
, nil, nil, Tree_Post_ID, [Tree_Post_Name], '');
cw_New_Member.AddCustomEdit(DateEdit_New_Member_Start, true, false, '');
cw_New_Member.AddCustomEdit(DateEdit_New_Member_End, false, false, '');
cw_New_Member.ActionEnter := Action_Insert_New_Member;
end;
//-----------------------------------------------------------
{ Cкрываем ненужные страницы }
cxTabSheet_Editing.TabVisible := False;
cxTabSheet_Add.TabVisible := False;
{ Прочитаем параметры из реестра }
Save_Restore_Params(Curr_Reg_Path, True);
end;
procedure TForm_Dictionaries.Action_Insert_Ed_GroupExecute(Sender: TObject);
//const Name = 'Учебные группы';
var
mf: TSForm;
begin
try // 1
mf := CreateSForm(self, 'fNew_Ed_Group'
, cxTabSheet_Ed_Group.Caption
, Add_Path + cxTabSheet_Ed_Group.Caption, Panel_New_Ed_Group, tdb_Apply);
if VarToStr(cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value) = ''
then cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value :=
DateToStr(Date);
cW_New_Ed_Group.OnChangeWrapper(nil);
mf.Position := poScreenCenter;
if mf.ShowModal = mrOk
then begin // 2
FSqlData_TableView := Get_SqlData_cxGrid(tv_ed_group);
if FSqlData_TableView <> nil
then begin // 3
FSqlData_TableView.Insert_New(
CreateVarAr([
cW_New_Ed_Group.Wrappers[cxTextEdit_New_Ed_Group_Name].Value
,tv_spec_div.DataController.Values[tv_spec_div.DataController.FocusedRecordIndex
,tv_spec_div_id_spec_div.Index]
,'1'
,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_Start].Value
,cW_New_Ed_Group.Wrappers[cxDateEdit_New_Ed_Group_D_End].Value
,'5'
]))
end; // 3
end; // 2
finally // 1
if assigned(mf)
then FreeAndNil(mf);
end; // 1
end;
{ Добавить новую комиссию}
procedure TForm_Dictionaries.Action_Insert_New_CommissionExecute(
Sender: TObject);
begin
cW_New_Commission.ChangesAcceptWrappers;
with cW_New_Commission, Get_SqlData_cxGrid(TTree_Commission) do
if Insert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Commission].Value)
, VarToStr(Parameters[2])
, VarToStr(Parameters[1])
, '3'
, VarToStr(Wrappers[DateEdit_New_Commission_Start].Value)
, VarToStr(Wrappers[DateEdit_New_Commission_End].Value)]))
then
begin
GetParentForm(Panel_New_Commission).ModalResult := mrok;
TButtonOrderEditWrapper(cW_New_Commission.Wrappers[ButtonEdit_New_Commission]).IsEmpty := False;
Read_Data;
end;
end;
{ Добавить члена комиссии}
procedure TForm_Dictionaries.Action_Insert_New_MemberExecute(Sender: TObject);
begin
cw_New_Member.ChangesAcceptWrappers;
with cw_New_Member, Get_SqlData_cxGrid(TTree_Members) do
if Insert_New(CreateVarAr([VarToStr(Wrappers[ButtonEdit_New_Member].Value)
, VarToStr(Parameters[1])
, VarToStr(Wrappers[PopupEdit_New_Member_Post].Value)
, VarToStr(Wrappers[PopupEdit_New_Member_FIO].Value)
, VarToStr(Wrappers[DateEdit_New_Member_Start].Value)
, VarToStr(Wrappers[DateEdit_New_Member_End].Value)]))
then
begin
GetParentForm(Panel_New_Member).ModalResult := mrok;
TButtonOrderEditWrapper(cw_New_Member.Wrappers[ButtonEdit_New_Member]).IsEmpty := False;
Read_Data;
end;
end;
procedure TForm_Dictionaries.Action_Insert_SpecExecute(Sender: TObject);
//const Name = 'Программа обучения';
var
mf: TSForm;
begin
try // 1
mf := CreateSForm(self, 'fNew_Spec', cxTabSheet_Add_Spec.Caption
, Add_Path + cxTabSheet_Add_Spec.Caption, Panel_New_Spec, tdb_Apply);
cW_New_Spec.OnChangeWrapper(nil);
mf.Position := poScreenCenter;
if mf.ShowModal = mrOk
then begin // 2
FSqlData_TableView := Get_SqlData_cxGrid(tv_Spec);
if FSqlData_TableView <> nil
then begin // 3
if MSystemServices.ExchangeData(Add_Spec,
CreateVarAr([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value
,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value
,IDK_Level_Spec
,IDK_Discipline
])
,'Добавление программы обучения.')
then begin // 4
FSqlData_TableView.Read_Data;
FindGridRecord(tv_spec,[tv_Spec_Name,tv_Spec_Q]
,VarArrayOf([cW_New_Spec.Wrappers[cxTextEditNew_Spec_Name].Value
,cW_New_Spec.Wrappers[cxTextEditNew_Spec_Quality].Value])
,true);
end; // 4
end; // 3
end; // 2
finally // 1
if assigned(mf)
then FreeAndNil(mf);
end; // 1
end;
procedure TForm_Dictionaries.Action_Insert_Spec_DivExecute(Sender: TObject);
//const Name = 'Организаторы обучения';
var
mf: TSForm;
begin
try // 1
mf := CreateSForm(self, 'fNew_Spec_Div'
, cxTabSheet_New_Spec_Div.Caption
, Add_Path + cxTabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div, tdb_Apply);
if VarToStr(cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value) = ''
then cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value := DateToStr(Date);
cW_New_Spec_Div.OnChangeWrapper(nil);
mf.Position := poScreenCenter;
if mf.ShowModal = mrOk
then begin // 2
FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div);
if FSqlData_TableView <> nil
then begin // 3
FSqlData_TableView.Insert_New(
CreateVarAr([
cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Spec].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Div].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_KT].Value
,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_Start].Value
,cW_New_Spec_Div.Wrappers[cxDateEditNew_Spec_Div_D_End].Value
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_Institute].Value
,IDK_Level_Formation
,cW_New_Spec_Div.Wrappers[cxPopupEditNew_Spec_Div_SF].Value
]))
end; // 3
end; // 2
finally // 1
if assigned(mf)
then FreeAndNil(mf);
end; // 1
end;
{ Добавление новой комиссии}
procedure TForm_Dictionaries.Action_New_CommissionExecute(Sender: TObject);
var new_form: TSForm;
begin
try // 1
new_form := CreateSForm(self, 'fNew_Commission'
, cxTabSheet_New_Sommission.Caption
, Add_Path + cxTabSheet_New_Sommission.Caption, Panel_New_Commission, tdb_Apply);
new_form.Position := poScreenCenter;
new_form.PanelButtons.auto_cxOkButton.Action := cW_New_Commission.ActionEnter;
new_form.ShowModal;
finally // 1
if assigned(new_form)
then FreeAndNil(new_form);
end; // 1
end;
{ Добавление члена комиссии}
procedure TForm_Dictionaries.Action_New_MemberExecute(Sender: TObject);
var new_form: TSForm;
begin
try // 1
new_form := CreateSForm(self, 'fNew_Member'
, cxTabSheet_New_Member.Caption
, Add_Path + cxTabSheet_New_Member.Caption, Panel_New_Member, tdb_Apply);
new_form.Position := poScreenCenter;
new_form.PanelButtons.auto_cxOkButton.Action := cw_New_Member.ActionEnter;
new_form.ShowModal;
finally // 1
if assigned(new_form)
then FreeAndNil(new_form);
end; // 1
end;
{ Обновим нужные данные}
procedure TForm_Dictionaries.cxPageControl3Change(Sender: TObject);
begin
if Get_SqlData_cxGrid(tv_ed_group) <> nil
then
if Sender = cxPageControl3
then
if cxPageControl3.ActivePageIndex = 0
then Get_SqlData_cxGrid(tv_ed_group).Read_Data_First
else Get_SqlData_cxGrid(TTree_Commission).Read_Data_First;
end;
procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_DivPropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_org_divExecute(self);
end;
procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_InstitutePropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_intitutesExecute(self);
end;
procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_KTPropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_kind_trainingExecute(self);
end;
procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_SFPropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_source_finansingExecute(self);
end;
procedure TForm_Dictionaries.cxPopupEditNew_Spec_Div_SpecPropertiesInitPopup(
Sender: TObject);
begin
Fill_tv_specExecute(self);
end;
procedure TForm_Dictionaries.Fill_tv_intitutesExecute(Sender: TObject);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_institutes);
if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end;
procedure TForm_Dictionaries.Fill_tv_kind_trainingExecute(Sender: TObject);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_Kind_Training);
if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end;
procedure TForm_Dictionaries.Fill_tv_k_l_fExecute(Sender: TObject);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_klf);
if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end;
procedure TForm_Dictionaries.Fill_tv_org_divExecute(Sender: TObject);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_Org_Division);
if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end;
procedure TForm_Dictionaries.Fill_tv_source_finansingExecute(Sender: TObject);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_Source_Financing);
if (FSqlData_TableView <> nil) and FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end;
procedure TForm_Dictionaries.Fill_tv_specExecute(Sender: TObject);
var Param1: string;
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_Spec);
if (FSqlData_TableView <> nil)
then begin // 1
Param1 := VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);
if VarToStr(FSqlData_TableView.Params[1]) <> Param1
then begin // 2
FSqlData_TableView.Params[1] := Param1;
FSqlData_TableView.Read_Data;
end // 2
else
if FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end; // 1
end;
procedure TForm_Dictionaries.Fill_tv_spec_divExecute(Sender: TObject);
var Param1: string;
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_spec_div);
if (FSqlData_TableView <> nil)
then begin // 1
Param1 := VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);
if VarToStr(FSqlData_TableView.Params[1]) <> Param1
then begin // 2
FSqlData_TableView.Params[1] := Param1;
FSqlData_TableView.Read_Data;
end // 2
else
if FSqlData_TableView.IsFirstRead
then FSqlData_TableView.Read_Data_First;
end; // 1
end;
procedure TForm_Dictionaries.FormDestroy(Sender: TObject);
begin
{ Сохраним параметры в реестр }
Save_Restore_Params(Curr_Reg_Path, False);
end;
procedure TForm_Dictionaries.FormShow(Sender: TObject);
begin
{ Перечитываем списки }
if PageControl_Main.ActivePage = cxTabSheet_Spec
then Fill_tv_specExecute(self);
if PageControl_Main.ActivePage = cxTabSheet_Org
then Fill_tv_spec_divExecute(self);
end;
{ Изменили фильтр!}
procedure TForm_Dictionaries.PageControl_MainPageChanging(Sender: TObject;
NewPage: TcxTabSheet; var AllowChange: Boolean);
begin
if NewPage = cxTabSheet_Spec
then Fill_tv_specExecute(self);
if NewPage = cxTabSheet_Org
then Fill_tv_spec_divExecute(self);
end;
{ Подразделение}
procedure TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesEditValueChanged(
Sender: TObject);
begin
if cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org] <> nil then
if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1]
<> VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value)
then
begin
Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] :=
VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value);
Get_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;
end;
end;
procedure TForm_Dictionaries.PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_intitutesExecute(self);
end;
procedure TForm_Dictionaries.DoChanged_cW_New_Spec(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_Spec, cW_New_Spec.IsNotEmptyMandatory);
end;
procedure TForm_Dictionaries.DoChanged_cW_New_Spec_Div(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_Spec_Div, cW_New_Spec_Div.IsNotEmptyMandatory);
end;
procedure TForm_Dictionaries.DoChanged_cW_New_Ed_Group(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_Ed_Group, cW_New_Ed_Group.IsNotEmptyMandatory);
end;
procedure TForm_Dictionaries.DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);
begin
if PageControl_Main.ActivePage = cxTabSheet_Spec
then Fill_tv_specExecute(self);
if PageControl_Main.ActivePage = cxTabSheet_Org
then Fill_tv_spec_divExecute(self);
end;
{ Выбрали новую специальность подразделения}
procedure TForm_Dictionaries.OnChoiceGridRecord_tv_spec_div(Sender: TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);
begin
FSqlData_TableView := Get_SqlData_cxGrid(tv_ed_group);
if (FSqlData_TableView <> nil) and (Sender <> nil)
then
if Sender.GridTableView = tv_spec_div
then
begin
with Sender, GridTableView.DataController do
if (LastChoiceIndex >= 0)
and (LastChoiceIndex < GridTableView.DataController.RecordCount)
then
begin // 1
FSqlData_TableView.Params[0] :=
VarToStr(Values[Sender.LastChoiceIndex, tv_spec_div_id_spec_div.Index]);
FSqlData_TableView.IsFirstRead := True;
FSqlData_TableView.ActionInsert.Enabled := Sender.ActionDelete.Enabled;
Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled := Sender.ActionDelete.Enabled;
Get_SqlData_cxGrid(TTree_Commission).Parameters[1] :=
VarToStr(Values[Sender.LastChoiceIndex, tv_spec_div_id_d_institute.Index]);
if Get_SqlData_cxGrid(TTree_Commission).Parameters[2] <>
VarToStr(Values[Sender.LastChoiceIndex, tv_spec_div_id_spec.Index])
then
begin
Get_SqlData_cxGrid(TTree_Commission).Parameters[2] :=
VarToStr(Values[Sender.LastChoiceIndex, tv_spec_div_id_spec.Index]);
Get_SqlData_cxGrid(TTree_Commission).IsFirstRead := True;
end;
end // 1
else
begin
FSqlData_TableView.Params[0] := '';
FSqlData_TableView.ClearData;
FSqlData_TableView.ActionInsert.Enabled := False;
Get_SqlData_cxGrid(TTree_Commission).Parameters[1] := '';
Get_SqlData_cxGrid(TTree_Commission).Parameters[2] := '';
Get_SqlData_cxGrid(TTree_Commission).ClearData;
Get_SqlData_cxGrid(TTree_Commission).ActionInsert.Enabled := False;
end;
cxPageControl3Change(cxPageControl3);
end
else
if Sender.GridTableView = TTree_Commission
then
begin
with Sender.GridTableView.DataController do
if (Sender.LastChoiceIndex >= 0)
and (Sender.LastChoiceIndex < RecordCount)
then
begin
Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled := Sender.ActionDelete.Enabled;
if Get_SqlData_cxGrid(TTree_Members).Parameters[1] <>
VarToStr(Values[Sender.LastChoiceIndex, Tree_Commission_ID.Index])
then
begin
Get_SqlData_cxGrid(TTree_Members).Parameters[1] :=
VarToStr(Values[Sender.LastChoiceIndex, Tree_Commission_ID.Index]);
Get_SqlData_cxGrid(TTree_Members).Read_Data;
end
else Get_SqlData_cxGrid(TTree_Members).Read_Data_First
end
else
begin
Get_SqlData_cxGrid(TTree_Members).Parameters[1] := '';
Get_SqlData_cxGrid(TTree_Members).ClearData;
Get_SqlData_cxGrid(TTree_Members).ActionInsert.Enabled := False;
end;
end;
end;
end.
unit Plan
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, cxPC, cxControls, cxSplitter, cxStyles, cxCustomData,
cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,
cxGridCustomView, cxGrid, cxEditRepositoryItems, cxClasses, cxTL,
cxContainer, cxPropertiesStore, cxTextEdit, cxMaskEdit, cxDropDownEdit,
cxLabel,wrappers, ActnList, cxLookAndFeels, cxLookAndFeelPainters, cxSpinEdit,
cxCalendar, GridEditClass,cxButtonEdit, cxTimeEdit;
const
{ Роль на редактирование специальностей мет. комплекса, специальностей,
организаторов обучения }
Action_Q_Edit_Spec = '1401';
{ Роль на редактирование учебных групп, сроков проведения и плана ПК }
Action_Q_Edit_Groups = '1402';
{ Вид уровня специальности "Повышение квалификации" }
IDK_Level_Spec = '70';
{ Вид дисциплины "Повышение квалификации }
IDK_Discipline = '59454';
{ Вид уровня образования "Повышение квалификации" }
IDK_Level_Formation = '70508';
{ Путь для сохранения в реестре }
Reg_Path = '\Software\AS Pilot group\Parameters\Модуль повышения квалификации\Планирование';
{ Путь для сохранения списков }
Grid_Path = '\Параметры списков\';
{ Путь для добавления }
Add_Path= 'Модуль повышения квалификации\Планирование\Добавление\';
type
TForm_Plan = class(TForm)
Panel_Main: TPanel;
PageControl_Main: TcxPageControl;
cxEditStyleController1: TcxEditStyleController;
cxStyleRepository3: TcxStyleRepository;
st_Group: TcxStyle;
sf_s_ContentEVEN: TcxStyle;
st_Filter_Box: TcxStyle;
st_Footer: TcxStyle;
st_Inactive: TcxStyle;
st_Indicator: TcxStyle;
st_Preview: TcxStyle;
st_Selection: TcxStyle;
st_ContentOdd: TcxStyle;
st_Content_TEXT: TcxStyle;
st_Content_POPUP: TcxStyle;
st_Content_DATE: TcxStyle;
st_Content_QUALIFIER: TcxStyle;
st_Footer_Column: TcxStyle;
st_Content_ID: TcxStyle;
st_Content_Memo: TcxStyle;
st_Content_Project: TcxStyle;
st_Content_Cancel: TcxStyle;
st_Content_ProjectSend: TcxStyle;
st_Content_Owner: TcxStyle;
st_Content_NotOwner: TcxStyle;
st_Content_Hot_Track: TcxStyle;
st_Inc_Search: TcxStyle;
st_Group_By_Box: TcxStyle;
st_Header: TcxStyle;
cxTreeList_Style_1: TcxTreeListStyleSheet;
cxGrid_Style_1: TcxGridBandedTableViewStyleSheet;
cxEditRepository1: TcxEditRepository;
cxER_Date_None_Blank: TcxEditRepositoryDateItem;
cxER_Date_With_Blank: TcxEditRepositoryDateItem;
cxER_Spin_ID: TcxEditRepositorySpinItem;
cxER_Text_RO: TcxEditRepositoryTextItem;
cxER_Memo_RO: TcxEditRepositoryMemoItem;
cxER_Date_RO: TcxEditRepositoryDateItem;
cxPropertiesStore1: TcxPropertiesStore;
Panel_Filter: TPanel;
cxLabel1: TcxLabel;
PopupEdit_Filter_Org: TcxPopupEdit;
cxER_Text: TcxEditRepositoryTextItem;
ActionList1: TActionList;
cxTabSheet_Editing: TcxTabSheet;
cxPageControl1: TcxPageControl;
cxTabSheet_Institutes: TcxTabSheet;
cxGrid_Institutes: TcxGrid;
tv_institutes: TcxGridBandedTableView;
tv_institutes_Abbr: TcxGridBandedColumn;
tv_institutes_Name: TcxGridBandedColumn;
tv_institutes_ID: TcxGridBandedColumn;
cxGridLevel2: TcxGridLevel;
cxTabSheet_Add: TcxTabSheet;
cxPageControl2: TcxPageControl;
Fill_tv_intitutes: TAction;
cxGrid_Com_Spec: TcxGrid;
tv_com_spec: TcxGridBandedTableView;
tv_com_spec_name_spec: TcxGridBandedColumn;
tv_com_spec_name_div: TcxGridBandedColumn;
tv_com_spec_kind_training: TcxGridBandedColumn;
tv_com_spec_id_spec_div: TcxGridBandedColumn;
tv_com_spec_id_spec: TcxGridBandedColumn;
tv_com_spec_id_d_spec_div: TcxGridBandedColumn;
tv_com_spec_idk_training: TcxGridBandedColumn;
cxGridLevel5: TcxGridLevel;
tv_com_spec_id_p_dp: TcxGridBandedColumn;
tv_com_spec_id_order: TcxGridBandedColumn;
tv_com_spec_idk_order: TcxGridBandedColumn;
tv_com_spec_status_text: TcxGridBandedColumn;
tv_com_spec_status_order: TcxGridBandedColumn;
tv_com_spec_id_met_complex: TcxGridBandedColumn;
Fill_tv_com_spec: TAction;
Action_Insert_Com_Spec: TAction;
cxTabSheet_New_Com_Spec: TcxTabSheet;
Panel_New_Com_Spec: TPanel;
cxLabel7: TcxLabel;
cxLabel9: TcxLabel;
cxLabel10: TcxLabel;
cxLabel11: TcxLabel;
cxPopupEdit_New_Com_Spec: TcxPopupEdit;
cxLabel13: TcxLabel;
cxPopupEdit_New_Com_Spec_Kind_Training: TcxPopupEdit;
cxPopupEdit_New_Com_Spec_Div: TcxPopupEdit;
cxButtonEdit_New_Com_Spec_Paragraph: TcxButtonEdit;
cxSpinEdit_New_Com_Spec_Hours: TcxSpinEdit;
tv_com_spec_hours: TcxGridBandedColumn;
tv_com_spec_id_e_l_umk: TcxGridBandedColumn;
cxTabSheet_Spec_Div: TcxTabSheet;
cxGrid_Spec_Div_Popup: TcxGrid;
tv_spec_div_popup: TcxGridBandedTableView;
tv_spec_div_popup_name_spec: TcxGridBandedColumn;
tv_spec_div_popup_name_div: TcxGridBandedColumn;
tv_spec_div_popup_kind_training: TcxGridBandedColumn;
tv_spec_div_popup_institute: TcxGridBandedColumn;
tv_spec_div_popup_source: TcxGridBandedColumn;
tv_spec_div_popup_d_start: TcxGridBandedColumn;
tv_spec_div_popup_d_end: TcxGridBandedColumn;
tv_spec_div_popup_id_spec_div: TcxGridBandedColumn;
tv_spec_div_popup_id_spec: TcxGridBandedColumn;
tv_spec_div_popup_id_d: TcxGridBandedColumn;
tv_spec_div_popup_idk_training: TcxGridBandedColumn;
tv_spec_div_popup_id_d_institute: TcxGridBandedColumn;
tv_spec_div_popup_id_source: TcxGridBandedColumn;
tv_spec_div_popup_idk_level_formation: TcxGridBandedColumn;
cxGridLevel8: TcxGridLevel;
Fill_tv_spec_div: TAction;
tv_com_spec_id_erp_user: TcxGridBandedColumn;
cxLabel85: TcxLabel;
cxSpinEdit_New_Com_Spec_Hours_SR: TcxSpinEdit;
procedure FormDestroy(Sender: TObject);
procedure Fill_tv_intitutesExecute(Sender: TObject);
procedure Fill_tv_com_specExecute(Sender: TObject);
procedure Action_Insert_Com_SpecExecute(Sender: TObject);
procedure tv_com_specEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
procedure tv_com_specSelectionChanged(Sender: TcxCustomGridTableView);
procedure FormShow(Sender: TObject);
procedure tv_com_specKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tv_com_specMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Fill_tv_spec_divExecute(Sender: TObject);
procedure PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);
procedure cxPopupEdit_New_Com_SpecPropertiesInitPopup(Sender: TObject);
private
{ Private declarations }
{ Доступность редактирования специальностей мет. комплекса, специальностей и организаторов обучения }
REdit_Spec: boolean;
{ Доступность редактирования учебных групп, сроков проведения и плана ПК }
REdit_Groups: boolean;
{ Объект для работы со списками }
FSqlData_TableView: TSqlData_cxGridTableView;
{ Путь реестра (для загрузки/сохранения параметров) }
Curr_Reg_Path: String;
{ Контейнеры оберток }
cW_Institute_Filter: TContainerWrappers;
cW_New_Com_Spec: TContainerWrappers;
{ Обработчики событий изменения в контейнерах оберток }
procedure DoChanged_cW_Intitute_Filter(AWrapper: TCustomEditWrapper);
procedure DoChanged_cW_New_Com_Spec(AWrapper: TCustomEditWrapper);
procedure Before_Delete_Exchange(Sender: TSqlData_cxGridTableView;
ARecordIndex: Integer; var ExchangeParameters: OleVariant);
{ Действие перед изменением данных в tv_com_spec }
procedure Before_Update_Exchange(Sender: TSqlData_cxGridTableView;
UpdateValue: Variant; AItem: TcxCustomGridTableItem; ARecordIndex: Integer;
var ExchangeParameters: OleVariant; var Allow: Boolean);
{ Установка доступности добавления }
procedure Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);
{ Установка доступности редактирования таблицы (с документом) }
function Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn; Roles: array of boolean): boolean; overload;
{ Установка доступности редактирования таблицы (без документа) }
function Allow_Editing(TV: TcxCustomGridTableView; Roles: array of boolean): boolean; overload;
{ Установка доступности удаления из таблицы (с документом) }
procedure Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn; Roles: array of boolean); overload;
{ Установка доступности удаления из таблицы (без документа) }
procedure Allow_Delete(TV: TcxCustomGridTableView; Roles: array of boolean); overload;
{ Сохранение/восстановление параметров списков }
procedure Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);
public
{ Public declarations }
{ Инициализация формы }
procedure Init(AReg_Path: String = Reg_Path);
{ Обновить роли }
procedure Refresh_Roles;
{ Проверка доступности ко всей форме без создания ее самой }
class function IsRoleAccessible: Boolean;
end;
var
Form_Plan: TForm_Plan;
implementation
{$R *.dfm}
uses SysServices, Get_PK_PPS_Data, standart_new, get_single_data, LP_u_CX_tools;
{ Сохранение/восстановление параметров списков }
procedure TForm_Plan.Save_Restore_Params(RReg_Path: String = Reg_Path; PIs_Load: Boolean = True);
begin
cxPropertiesStore1.StorageName:=RReg_Path+'\Общие параметры';
if PIs_Load
{ Восстановление параметров }
then begin // 1
{ Восстановим общие параметры }
cxPropertiesStore1.RestoreFrom;
{ Восстановим значения фильтра по институтам }
if PopupEdit_Filter_Org.Tag <> 0
then begin // 2
cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value := IntToStr(PopupEdit_Filter_Org.Tag);
cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := PopupEdit_Filter_Org.Text;
end // 2
else begin // 3
cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value := '';
cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay := '';
end; // 3
end // 1
{ Сохранение параметров }
else begin // 4
{ Сохраним значения фильтра по институтам }
if VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value) <> ''
then begin // 5
PopupEdit_Filter_Org.Tag := StrToInt(VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].Value));
PopupEdit_Filter_Org.Text := VarToStr(cW_Institute_Filter.Wrappers[PopupEdit_Filter_Org].ValueDisplay);
end // 5
else begin // 6
PopupEdit_Filter_Org.Tag := 0;
PopupEdit_Filter_Org.Text := '';
end; // 6
{ Сохраним общие параметры }
cxPropertiesStore1.StoreTo(True);
end; // 4
{ Сохранение или загрузки параметров списков (в зависимости от параметра PIs_Load) }
Restore_cxGridTableView(tv_com_spec, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_com_spec).Table_Name);
Restore_cxGridTableView(tv_spec_div_popup, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_spec_div_popup).Table_Name);
Restore_cxGridTableView(tv_institutes, PIs_Load, RReg_Path+Grid_Path+Get_SqlData_cxGrid(tv_institutes).Table_Name);
end;
{ Проверка доступности ко всей форме без создания ее самой! }
class function TForm_Plan.IsRoleAccessible: Boolean;
begin
Result := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Spec)
or vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups)
or vnSessionAgent.IsDBA;
end;
procedure TForm_Plan.PopupEdit_Filter_OrgPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_intitutesExecute(self);
end;
{ Проверка прав }
procedure TForm_Plan.Refresh_Roles;
var DBA: boolean;
begin
{ Проверка наличия ролей }
DBA := vnSessionAgent.IsDBA;
REdit_Spec := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Spec) or DBA;
REdit_Groups := vnSessionAgent.IsRoleSomehowAccessible('', '', Action_Q_Edit_Groups) or DBA;
end;
{ Установка доступности добавления }
procedure TForm_Plan.Allow_Insert(TV: TcxCustomGridTableView; Roles: array of boolean);
var i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
if not FSqlData_TableView.IsFirstRead
then begin // 2
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
FSqlData_TableView.ActionInsert.Enabled := Allow;
end // 2
else FSqlData_TableView.ActionInsert.Enabled := False;
end; // 1
end;
{ Установка доступности редактирования таблицы (с документом) }
function TForm_Plan.Allow_Editing(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn; Roles: array of boolean): boolean;
var status, id_erp: string;
i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
if (TV.DataController.FocusedRecordIndex <> -1)
then begin // 2
status := VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,Status_Column.Index]);
id_erp := VarToStr(TV.DataController.Values[TV.DataController.FocusedRecordIndex
,ID_ERP_Column.Index]);
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
Result := (status = '2') and (id_erp = vnSessionAgent.ID_ERP_User) and Allow;
end // 2
else Result := False;
end; // 1
end;
{ Установка доступности редактирования таблицы (без документа) }
function TForm_Plan.Allow_Editing(TV: TcxCustomGridTableView; Roles: array of boolean): boolean;
var i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
Result := (TV.DataController.FocusedRecordIndex <> -1) and Allow;
end // 1
else Result := False;
end;
{ Установка доступности удаления из таблицы (с документом) }
procedure TForm_Plan.Allow_Delete(TV: TcxCustomGridTableView; Status_Column: TcxGridColumn;
ID_ERP_Column: TcxGridColumn; Roles: array of boolean);
var i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
FSqlData_TableView.ActionDelete.Enabled := Is_Value(Status_Column, '2', false)
and Is_Value(ID_ERP_Column, vnSessionAgent.ID_ERP_User, false)
and (TV.Controller.SelectedRecordCount > 0) and Allow;
end; // 1
end;
{ Установка доступности удаления из таблицы (без документа) }
procedure TForm_Plan.Allow_Delete(TV: TcxCustomGridTableView; Roles: array of boolean);
var i: integer;
Allow: boolean;
begin
FSqlData_TableView := Get_SqlData_cxGrid(TV);
if (FSqlData_TableView <> nil) and (Length(Roles) > 0)
then begin // 1
Allow := False;
for i := 0 to Length(Roles) - 1
do Allow := Allow or Roles[i];
FSqlData_TableView.ActionDelete.Enabled := (TV.Controller.SelectedRecordCount > 0) and Allow;
end; // 1
end;
procedure TForm_Plan.tv_com_specEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
Allow_Editing(Sender, tv_com_spec_status_order, tv_com_spec_id_erp_user, [REdit_Spec]);
Подобные документы
Разработка приложения, автоматизирующего технологию формирования документов об окончании, для совершенствования организации работы учебных отделов, кафедр и отдела аттестации университета. Требования к разрабатываемому приложению, его архитектура.
дипломная работа [2,2 M], добавлен 15.10.2013Визуальная разработка приложений баз данных. Характеристика визуальных компонентов среды разработки Builder 6.0, используемых в данном приложении. Программная реализация приложения, разработка форм и вкладок. Тестирование приложения, листинг программы.
курсовая работа [3,1 M], добавлен 28.03.2011Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.
дипломная работа [1,4 M], добавлен 03.06.2014Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.
курсовая работа [949,7 K], добавлен 22.02.2015Последовательность разработки информационного обеспечения очного и дистанционного обучения через просмотры и прослушивание подкастов. Создание веб-сайта или модуля существующей системы. Описание интерфейсов системы. Настройка прав доступа к подкастам.
дипломная работа [2,3 M], добавлен 19.11.2010Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.
курсовая работа [1,1 M], добавлен 04.09.2014Характеристика объекта автоматизации. Создание многоуровневой архитектуры приложения, отладка метода безошибочной идентификации пользователей системы. Разработка нестандартного метода преобразования объектов базы данных в объекты классов приложения.
курсовая работа [395,4 K], добавлен 28.04.2015- Создание защищенного приложения для ведения учета продаж и закупок, ориентированного на малый бизнес
Проектирование модели базы данных в соответствии с предметной областью "Торговля". Разработка архитектуры системы безопасности приложения по ведению базы данных. Реализация приложения, обеспечивающего учет продаж и закупок предприятия. Способы его защиты.
дипломная работа [2,5 M], добавлен 05.02.2017 Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016