Разработка модуля поддержки процессов организации повышения квалификации преподавателей в рамках АСУ МИИТ

Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.