Разработка модуля поддержки процессов организации повышения квалификации преподавателей в рамках АСУ МИИТ
Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.07.2013 |
Размер файла | 4,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
OptionsOrder.Column_Status_Text := tv_plan_status_text;
OptionsOrder.Column_ID_order := tv_plan_id_order;
OptionsOrder.Column_ID_paragraph := tv_plan_id_paragraph;
OptionsOrder.Column_IDk_order := tv_plan_idk_order;
OptionsOrder.Column_Status_Order := tv_plan_status_order;
OptionsOrder.Column_ID_erp_user := tv_plan_id_erp_user;
OptionsOrder.Column_hisdate := tv_plan_hisdate;
OptionsOrder.Column_summary := tv_plan_summary;
OptionsOrder.Column_note := tv_plan_note;
OptionsOrder.Column_d_creation := tv_plan_d_creation;
PopupActions.Add(OptionsOrder.ActionPreview);
PopupActions.Add(OptionsOrder.ActionNavigate);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
end;
// Программы обучения в испорте
with TSqlData_cxGridTableView.Create(tv_Spec) do
begin
Editing := False;
Table_Name := tv_Spec.Bands.Items[0].Caption;
GUID_Select := Get_List_Spec_By_Params;
StepOnTopDataRecordMode := True;
ParametersCount := 2;
Parameters[1] := IDK_Level_Spec;
with Select_Columns do
begin
Add(tv_Spec_Name, 2);
Add(tv_Spec_Q, 1);
Add(tv_Spec_ID, 0);
Add(tv_Spec_IDK_Level_Spec, 6);
Add(tv_Spec_id_discipline);
Add(tv_Spec_idk_discipline);
end;
Key_Columns.Add(tv_Spec_ID, 0);
Stat_Column := tv_Spec_Name;
NameColumnsForPopupEdit.Add(tv_Spec_Name);
cW_New_Spec := TContainerWrappers.Create;
cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Name, True, False, '');
cW_New_Spec.AddCustomEdit(cxTextEditNew_Spec_Quality, False, False, '');
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;
// ---------------------------------------------
// добавление подразделение-организаторов обучения
// ---------------------------------------------
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);
cW_New_Spec_Div := TContainerWrappers.Create;
cW_New_Spec_Div.AddCustomEdit(DateEditNew_Spec_Div_D_Start, True, False, '');
cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Spec, True, False,
cxGrid_Spec, tv_Spec, tv_Spec_ID, [tv_Spec_Name], '');
cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_KT, True, False,
cxGrid_Kind_Training, tv_Kind_Training, tv_Kind_Training_IDK_TRAINING,
[tv_Kind_Training_Name], '');
cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_SF, True, False,
cxGrid_Source_Financing, tv_Source_Financing, tv_Source_Financing_ID,
[tv_Source_Financing_Name], '');
cW_New_Spec_Div.AddPopupEdit(PopupEditNew_Spec_Div_Institute, 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(PopupEditNew_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.MakeSynchronize_Similar([PopupEditNew_Spec_Div_Institute,
PopupEditNew_Spec_Div_Institute], False);
cW_New_Spec_Div.OnChangeWrapper := DoChanged_cW_Spec_Div;
end;
// ---------------------------------------------
// добавление подразделение-организаторов обучения
// ---------------------------------------------
if Get_SqlData_cxGrid(TTree_Stat) = nil then
with TSqlData_cxGridTableView.Create(TTree_Stat) do
begin
Table_Name := TTree_Stat.Bands.Items[0].Caption;
Editing := False;
GUID_Select := Get_Stat_Data_By_Period;
StepOnTopDataRecordMode := True;
ParametersCount := 2;
Select_Columns.Add(Tree_Stat_Inst);
Select_Columns.Add(Tree_Stat_Spec_Name);
Select_Columns.Add(Tree_Stat_FIO);
Select_Columns.Add(Tree_Stat_EG);
Select_Columns.Add(Tree_Stat_D_Start);
Select_Columns.Add(Tree_Stat_D_End);
Select_Columns.Add(Tree_Stat_Order_Start);
Select_Columns.Add(Tree_Stat_Order_End);
Select_Columns.Add(Tree_Stat_Contract);
Select_Columns.Add(Tree_Stat_Org);
Select_Columns.Add(Tree_Stat_Money);
Select_Columns.Add(Tree_Stat_Money_NDS);
Select_Columns.Add(Tree_Stat_Cert);
Select_Columns.Add(Tree_Stat_Hours_Fact);
Select_Columns.Add(Tree_Stat_Hours_Plan);
Select_Columns.Add(Tree_Stat_Last_Date);
Select_Columns.Add(Tree_Stat_Contract_Main);
Select_Columns.Add(Tree_Stat_Org_Main);
Select_Columns.Add(Tree_Stat_ID_E);
Select_Columns.Add(Tree_Stat_ID_C);
Select_Columns.Add(Tree_Stat_ID_Student);
Select_Columns.Add(Tree_Stat_ID_EG);
Key_Columns.Add(Tree_Stat_ID_E);
Key_Columns.Add(Tree_Stat_ID_Student);
Stat_Column := Tree_Stat_FIO;
ActionUpdate.OnExecute := Action_Read_Stat.OnExecute;
Cont_Stat := TContainerWrappers.Create;
Cont_Stat.AddCustomEdit(DateEdit_Stat_Begin, False, False);
Cont_Stat.AddCustomEdit(DateEdit_Stat_End, False, False);
end;
if Get_SqlData_cxGrid(TTree_MC) = nil then
with TSqlData_cxGridTableView.Create(TTree_MC) do
begin
Single := False;
Table_Name := TTree_MC.Bands.Items[0].Caption;
Row_Name := 'рамочный договор';
GUID_Select := Get_List_MC;
GUID_Update := d_P_CONTRACTS;
GUID_Delete := GUID_Delete_Main_Contract;
OnBefore_Delete_Exchange := Delete_Main_Contract;
StepOnTopDataRecordMode := True;
ParametersCount := 3;
Stat_Column := Tree_MC_Org;
with Select_Columns do
begin
Add(Tree_MC_Org, 2);
Add(Tree_MC_Kind);
Add(Tree_MC_Hisdate);
Add(Tree_MC_Start, 3);
Add(Tree_MC_End, 4);
Add(Tree_MC_Count);
Add(Tree_MC_Order);
Add(Tree_MC_Number);
Add(Tree_MC_Old_Number);
Add(Tree_MC_User);
Add(Tree_MC_ID_Contract, 0);
Add(Tree_MC_ID_CA, 2);
Add(Tree_MC_ID_MT);
Add(Tree_MC_ID_MO);
Add(Tree_MC_ID_Paragraph);
Add(Tree_MC_ID_Order);
Add(Tree_MC_IDK_Order);
Add(Tree_MC_ID_ERP);
Add(Tree_MC_ID_Status);
end;
Key_Columns.Add(Tree_MC_ID_Contract, 0);
OptionsOrder.Column_Status_Text := Tree_MC_Order;
OptionsOrder.Column_identifier := Tree_MC_Number;
OptionsOrder.Column_ID_order := Tree_MC_ID_Order;
OptionsOrder.Column_ID_paragraph := Tree_MC_ID_Paragraph;
OptionsOrder.Column_IDk_order := Tree_MC_IDK_Order;
OptionsOrder.Column_ID_erp_user := Tree_MC_ID_ERP;
OptionsOrder.Column_User_Name := Tree_MC_User;
ActionInsert.Visible := True;
ActionInsert.OnExecute := Action_New_MC.OnExecute;
PopupActions.Add(Action_New_MC);
PopupActions.Add(ActionDelete);
PopupActions.Add(nil);
PopupActions.Add(OptionsOrder.ActionPreview);
PopupActions.Add(OptionsOrder.ActionNavigate);
PopupActions.Add(nil);
PopupActions.Add(ActionUpdate);
{cxPopupEdit_New_Listener_Contract_Organization.Properties.PopupControl :=
Current_Form_Find_Org;}
TcxPopupEditProperties(Tree_MC_Org.Properties).PopupControl := Current_Form_Find_Org;
with PopupColumnsList.Add(Tree_MC_Org) do
begin
SelfKeyColumn := Tree_MC_ID_CA;
PopupKeyColumn := Current_Form_Find_Org.Tree_Org_ID_CA;
PopupNameColumn := Current_Form_Find_Org.Tree_Org_Name;
end;
PopupEdit_Filter_Org.Properties.PopupControl := Current_Form_Find_Org;
cw_Filter_Contracts_Main := TContainerWrappers.Create;
cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_Start, False, False);
cw_Filter_Contracts_Main.AddCustomEdit(DateEdit_Filter_End, False, False);
cw_Filter_Contracts_Main.AddPopupEdit(PopupEdit_Filter_Org
, False, False, Current_Form_Find_Org.cxGrid_Org
, Current_Form_Find_Org.TTree_Org, Current_Form_Find_Org.Tree_Org_ID_CA
, [Current_Form_Find_Org.Tree_Org_Name], '');
if PageControl_Main.ActivePageIndex = 3
then Filter_MC_Changed(DateEdit_Filter_Start);
end;
// ---------------------------------------------
DateEdit_New_Contract_Main_Start.Date := Date;
DateEdit_New_Contract_Main_End.Date := Date;
if cw_New_Contract_Main = nil
then
begin
PopupEdit_New_Contract_Main.Properties.PopupControl := Current_Form_Find_Org;
cw_New_Contract_Main := TContainerWrappers.Create;
cw_New_Contract_Main.AddPopupEdit(PopupEdit_New_Contract_Main
, True, False
, Current_Form_Find_Org.cxGrid_Org
, Current_Form_Find_Org.TTree_Org
, Current_Form_Find_Org.Tree_Org_ID_CA
, [Current_Form_Find_Org.Tree_Org_Name], '');
cw_New_Contract_Main.AddButtonOrderEdit(ButtonEdit_New_Contract_Main
, True, False, '', ['24790']
, [OBE_CHOOSE, OBE_NEW, OBE_INNAVIGATE, OBE_PREVIEW]
, [nil, nil, nil, nil]);
cw_New_Contract_Main.AddCustomEdit(TextEdit_New_Contract_Main, False, False, '');
cw_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_Start, True, False, '');
cw_New_Contract_Main.AddCustomEdit(DateEdit_New_Contract_Main_End, False, False, '');
cw_New_Contract_Main.ActionEnter := Action_Insert_Contract_Main;
end;
{ Скрываем ненужные страницы }
cxTabSheet_Editing.TabVisible := False;
cxTabSheet_Add.TabVisible := False;
{ Прочитаем параметры из реестра }
Save_Restore_Params(Curr_Reg_Path, True);
// *****************************************************************************
// *****************************************************************************
cW_Plan_Filters := TContainerWrappers.Create;
cW_Plan_Filters.AddCustomEdit(cxSpinEdit_Plan_Filters_Year, False, False, '');
cW_Plan_Filters.AddPopupEdit(cxPopupEdit_Plan_Filters_Plan, False, False,
cxGrid_Plan, tv_plan, tv_plan_id_paragraph, [tv_plan_note], '');
cW_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Summary, False, True,
'');
cW_Plan_Filters.AddCustomEdit(cxTextEdit_Plan_Filters_Note, False, True, '');
cW_Plan_Filters.ActionApply := Plan_Apply;
cW_Plan_Filters.ActionRefuse := Plan_Refuse;
cW_Plan_Filters.OnChangeWrapper := DoChanged_cW_Plan_Filters;
{ Устанавливаем значение фильтра }
cW_Plan_Filters.wrappers[cxSpinEdit_Plan_Filters_Year].Value := IntToStr
(YearOf(Date));
if cxPopupEdit_Plan_Filters_Plan.Tag <> 0
then begin
cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value :=
VarToStr(cxPopupEdit_Plan_Filters_Plan.Tag);
cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].ValueDisplay :=
VarToStr(cxPopupEdit_Plan_Filters_Plan.Text);
end;
end;
{ Добавление организатора (специальности подразделения)}
procedure TForm_Event.ButtonEdit_Import_Spec_DivClick(Sender: TObject);
var
mf: TSForm;
i: Integer;
begin
try // 1
mf := CreateSForm(self, 'fNew_Spec_Div', TabSheet_New_Spec_Div.Caption,
Add_Path + TabSheet_New_Spec_Div.Caption, Panel_New_Spec_Div, tdb_Apply);
cW_New_Spec_Div.ClearWrappers;
cW_New_Spec_Div.wrappers[ DateEditNew_Spec_Div_D_Start].Value :=
cW_Import.wrappers[DateEdit_Import_Start].Value;
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].Value :=
cW_Import.wrappers[PopupEdit_Import_Spec].Value;
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Spec].ValueDisplay :=
cW_Import.wrappers[PopupEdit_Import_Spec].ValueDisplay;
// Институт
if id_d_import <> ''
then
begin
Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;
i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]
, CreateVarAr([id_d_import]));
if i >= 0
then
begin
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value :=
VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_ID.Index]);
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay :=
VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_Abbr.Index]);
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].Value;
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Institute].ValueDisplay;
end;
if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] <> id_d_import
then
begin
Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] := id_d_import;
Get_SqlData_cxGrid(tv_Source_Financing).Read_Data;
if tv_Source_Financing.DataController.RecordCount = 1
then
begin
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].Value :=
VarToStr(tv_Source_Financing.DataController.Values[0, tv_Source_Financing_ID.Index]);
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_SF].ValueDisplay :=
VarToStr(tv_Source_Financing.DataController.Values[0, tv_Source_Financing_Name.Index]);
end;
end;
end;
// Кафедра
if id_d_kaf <> ''
then
begin
Get_SqlData_cxGrid(tv_Org_Division).Read_Data_First;
i := FindGridRecordIndex(tv_Org_Division, [tv_Org_Division_ID]
, CreateVarAr([id_d_kaf]));
if i >= 0
then
begin
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].Value :=
VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_ID.Index]);
cW_New_Spec_Div.wrappers[PopupEditNew_Spec_Div_Div].ValueDisplay :=
VarToStr(tv_Org_Division.DataController.Values[i, tv_Org_Division_Name.Index]);
end;
end;
mf.Position := poScreenCenter;
if mf.ShowModal = mrok then
begin // 2
if Get_SqlData_cxGrid(tv_spec_div_popup).Insert_New(
CreateVarAr([VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Spec].Value)
, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Div].Value)
, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_KT].Value)
, VarToStr(cW_New_Spec_Div.Wrappers[DateEditNew_Spec_Div_D_Start].Value)
, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_Institute].Value)
, '70508' // уровень образования
, VarToStr(cW_New_Spec_Div.Wrappers[PopupEditNew_Spec_Div_SF].Value)]))
then
begin // 3
i := tv_spec_div_popup.DataController.Values
[tv_spec_div_popup.DataController.FocusedRecordIndex, tv_spec_div_popup_id_spec_div.Index];
Get_SqlData_cxGrid(tv_spec_div_popup).Read_Data;
i := FindGridRecordIndex(tv_spec_div_popup, [tv_spec_div_popup_id_spec_div]
, CreateVarAr([IntToStr(i)]));
if i >= 0
then
begin
cW_Import.wrappers[PopupEdit_Import_Spec_Div].Value := VarToStr
(tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_id_spec_div.Index]);
cW_Import.wrappers[PopupEdit_Import_Spec_Div].ValueDisplay := VarToStr
(tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_institute.Index])
+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_name_div.Index]))
+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_name_spec.Index]))
+ ', ' + VarToStr((tv_spec_div_popup.DataController.Values[i, tv_spec_div_popup_kind_training.Index]));
end;
end; // 3
end; // 2
finally // 1
if assigned(mf) then
FreeAndNil(mf);
SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);
if Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] <> ''
then
begin
Get_SqlData_cxGrid(tv_Source_Financing).Parameters[1] := '';
Get_SqlData_cxGrid(tv_Source_Financing).IsFirstRead := True;
end;
end; // 1
end;
{ Добавление УМК}
procedure TForm_Event.ButtonEdit_Import_UMKClick(Sender: TObject);
var
mf: TSForm;
i: Integer;
begin
try // 1
mf := CreateSForm(self, 'fNew_UMK', TabSheet_New_UMK.Caption,
Add_Path + TabSheet_New_UMK.Caption, Panel_New_UMK, tdb_Apply);
mf.Position := poScreenCenter;
cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value := Import_Hours;
cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value := Import_Hours_SR;
if mf.ShowModal = mrok then
begin // 2
if MSystemServices.ExchangeData(Create_UMK_By_ID_SD
,CreateVarAr([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)
, VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours].Value)
, VarToStr(cw_New_UMK.Wrappers[SpinEdit_New_UMK_Hours_SR].Value)])
, 'Не смогли добавить методический комплекс.')
then
begin // 3
FSqlData_TableView.Read_Data;
i := FindGridRecordIndex(tv_com_spec, [tv_com_spec_id_spec_div],
VarArrayOf([VarToStr(cW_Import.Wrappers[PopupEdit_Import_Spec_Div].Value)]));
if i >= 0 then
begin
cW_Import.wrappers[PopupEdit_Import_UMK].Value := VarToStr
(tv_com_spec.DataController.Values[i, tv_com_spec_id_met_complex.Index]);
cW_Import.wrappers[PopupEdit_Import_UMK].ValueDisplay := VarToStr
(tv_com_spec.DataController.Values[i, tv_com_spec_hours.Index])
+ ', ' + VarToStr(VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_sam.Index])
+ ', ' + VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_name_spec.Index])
+ ', ' + tv_com_spec.DataController.Values[i, tv_com_spec_name_div.Index])
+ ', ' + VarToStr(tv_com_spec.DataController.Values[i, tv_com_spec_kind_training.Index])
end;
end; // 3
end; // 2
finally // 1
if assigned(mf) then
FreeAndNil(mf);
SetForegroundWindow(GetParentForm(ButtonEdit_Import_Spec).Handle);
end; // 1
end;
{ Выбрали журнал - узнаем рег.номер}
procedure TForm_Event.ButtonEdit_New_CertPropertiesEditValueChanged(
Sender: TObject);
var i: integer; data: olevariant;
begin
if ((Sender = ButtonEdit_New_Cert) or (Sender = PopupEdit_New_Cert_Kind_Doc))
and (Cont_Make_Cert <> nil)
and (VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value) <> '')
then begin
data := MSystemServices.SelectData(Get_Reg_Number_By_ID_Paragraph
, CreateVarAr([VarToStr(Cont_Make_Cert.Wrappers[ButtonEdit_New_Cert].Value)
, VarToStr(Cont_Make_Cert.Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)])
, i, 'Не смогли узнать регистрационный номер в журнале.');
if VarIsArray(data)
then
begin
if VarToStr(data[0][0]) = ''
then Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value := 1
else Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Reg].Value := VarToStr(data[0][0] + 1);
if VarToStr(data[0][1]) = ''
then Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value := 1
else Cont_Make_Cert.Wrappers[SpinEdit_New_Cert_Number].Value := VarToStr(data[0][1] + 1);
end;
end;
end;
procedure TForm_Event.cxButtonEdit_PC_Create_DirectionClick(Sender: TObject);
begin
Action_Insert_New_DirectionExecute(self);
end;
procedure TForm_Event.
cxDateEdit_New_Listener_Contract_D_EndPropertiesEditValueChanged
(Sender: TObject);
begin
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value;
end;
procedure TForm_Event.
cxDateEdit_New_Listener_Contract_D_StartPropertiesEditValueChanged
(Sender: TObject);
begin
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value;
end;
procedure TForm_Event.cxDateEdit_New_Listener_D_EndPropertiesEditValueChanged
(Sender: TObject);
begin
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;
end;
procedure TForm_Event.cxDateEdit_New_Listener_D_StartPropertiesEditValueChanged
(Sender: TObject);
begin
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;
end;
procedure TForm_Event.cxPageControl_StudentPageChanging(Sender: TObject;
NewPage: TcxTabSheet; var AllowChange: Boolean);
begin
if NewPage = cxTabSheet_Orders then
Fill_tv_ordersExecute(self);
if NewPage = cxTabSheet_Anketa then
Fill_AnketaExecute(self);
if NewPage = cxTabSheet_Contracts then
Fill_Contract_ParamsExecute(self);
if NewPage = cxTabSheet_Stages
then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;
end;
procedure TForm_Event.cxPopupEdit_KBA_EndPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_kba_endExecute(self);
end;
procedure TForm_Event.cxPopupEdit_New_DirectionPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_kind_directionExecute(self);
end;
procedure TForm_Event.
cxPopupEdit_New_Listener_Contract_Source_FinansingPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_source_finansingExecute(self);
end;
procedure TForm_Event.
cxPopupEdit_New_Listener_Ed_GroupPropertiesEditValueChanged(Sender: TObject);
begin
if VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group]
.Value) <> '' then
begin // 1
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr
(tv_r_c_groups.DataController.Values
[tv_r_c_groups.DataController.FocusedRecordIndex,
tv_r_c_groups_d_start.Index]);
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr
(tv_r_c_groups.DataController.Values
[tv_r_c_groups.DataController.FocusedRecordIndex,
tv_r_c_groups_d_end.Index]);
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value;
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value;
end // 1
else
begin // 2
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := '';
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := '';
end; // 2
end;
procedure TForm_Event.cxPopupEdit_New_Listener_Ed_GroupPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_r_c_groupsExecute(self);
end;
procedure TForm_Event.
cxPopupEdit_New_Listener_Kind_Basis_ActionPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_kba_startExecute(self);
end;
procedure TForm_Event.cxPopupEdit_New_Listener_Kind_OrderPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_kind_orderExecute(self);
end;
procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesEditValueChanged
(Sender: TObject);
begin
if not cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order].IsClear then
begin // 1
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_Start].Value :=
VarToStr(tv_contracts.DataController.Values
[tv_contracts.DataController.FocusedRecordIndex,
tv_contracts_d_start.Index]);
cW_New_Listener.wrappers[cxDateEdit_New_Listener_Contract_D_End].Value :=
VarToStr(tv_contracts.DataController.Values
[tv_contracts.DataController.FocusedRecordIndex,
tv_contracts_d_end.Index]);
end; // 1
end;
procedure TForm_Event.cxPopupEdit_New_Listener_OrderPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_contractsExecute(self);
end;
procedure TForm_Event.cxPopupEdit_New_R_C_Group_Ed_GroupPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_ed_groupExecute(self);
end;
procedure TForm_Event.cxPopupEdit_New_R_C_Group_Met_ComplexPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_com_specExecute(Sender);
end;
procedure TForm_Event.cxPopupEdit_New_R_C_Plan_Spec_DivPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_spec_div_popupExecute(self);
end;
procedure TForm_Event.cxPopupEdit_PC_Kind_DirectionPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_kind_directionExecute(self);
end;
procedure TForm_Event.cxPopupEdit_PC_PostPropertiesInitPopup(Sender: TObject);
begin
Fill_tv_postsExecute(self);
end;
procedure TForm_Event.cxPopupEdit_Plan_Filters_PlanPropertiesInitPopup
(Sender: TObject);
begin
Fill_tv_planExecute(self);
end;
procedure TForm_Event.DoChanged_cW_New_R_C_Plan(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_R_C_Plan, cW_New_R_C_Plan.IsNotEmptyMandatory);
end;
procedure TForm_Event.DoChanged_cW_New_R_C_Group(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_R_C_Group,
cW_New_R_C_Group.IsNotEmptyMandatory);
end;
{ Заполнение полей ввода при импорте из файла}
procedure TForm_Event.Action_After_Show_New_AnketaExecute(Sender: TObject);
begin
with Form_Anketa_For_New do
begin
if curr_sex = '1'
then SEX.ItemIndex := 0
else SEX.ItemIndex := 1;
SURNAME.Text := curr_surname;
ENAME.Text := curr_name;
PATRONYMIC.Text := curr_patronymic;
cxTextEditPhone_.Text := curr_phone;
cxTextEditEmail_.Text := curr_email;
DATE_OF_BIRTH.Date := StrToDate(curr_birthday);
CIT_D_START.Date := StrToDate(curr_birthday);
AnyPersEditValueChanged(DATE_OF_BIRTH);
if ID_E <> ''
then Form_Anketa_For_New.ModalResult := mryes;
end;
end;
{ Выставление новых начислений}
procedure TForm_Event.Action_Create_NachExecute(Sender: TObject);
var new_form: TSForm;
begin
try // 1
new_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'
, TabSheet_New_Nach.Caption
, Add_Path + TabSheet_New_Nach.Caption, Panel_New_Nach, tdb_Apply);
{ Устанавливаем значение по умолчанию }
new_form.Position := poScreenCenter;
new_form.PanelButtons.auto_cxOkButton.Action := Cont_New_Nach.ActionEnter;
new_form.ShowModal;
finally // 1
if assigned(new_form)
then FreeAndNil(new_form);
end; // 1
end;
{ Выставление новых начислений по выделенным договорам}
procedure TForm_Event.Action_Create_Nach_AllExecute(Sender: TObject);
var new_form: TSForm;
begin
try // 1
new_form := CreateSForm(self, TabSheet_New_Nach.Name + '1'
, TabSheet_Create_Nach_All.Caption
, Add_Path + TabSheet_Create_Nach_All.Caption, Panel_Create_Nach_All, tdb_Apply);
{ Устанавливаем значение по умолчанию }
new_form.Position := poScreenCenter;
new_form.PanelButtons.auto_cxOkButton.Action := Cont_New_Nach_All.ActionEnter;
new_form.ShowModal;
finally // 1
if assigned(new_form)
then FreeAndNil(new_form);
end; // 1
end;
{ Выставление новых начислений по выделенным участникам }
procedure TForm_Event.Action_Go_Nach_AllExecute(Sender: TObject);
var L: TIntegerList; i: integer;
begin
with Get_SqlData_cxGrid(tv_listeners), Cont_New_Nach_All do
begin
GetSelectedRecordIndexList(L);
MSystemServices.StartSequenceActions(False, True);
for i := 0 to L.Count - 1 do
MSystemServices.ExchangeData(Create_New_Nach
, CreateVarAr([VarToStr(GridTableView.DataController.
Values[L.Items[i], tv_listeners_id_contract.Index])
, VarToStr(Wrappers[DateEdit_Create_Nach_All].Value)
, VarToStr(Wrappers[ButtonEdit_Create_Nach_All].Value)]));
MSystemServices.EndSequenceActions;
Read_Data;
HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат работы', 'Начисления сформированы.');
end;
end;
procedure TForm_Event.Action_Add_ContractExecute(Sender: TObject);
const
Name = 'Участники';
var
mf: TSForm;
id_o, id_p, def_Ann, def_Basis, def_Note, def_Ass, NewContextIndex, IDk_List,
k_List_Name, ko_ID_Metaterm, kind_order, def_Ident, def_IdenDate,
ID_Period_Nubbering, id_NewSeries, NewSeries: WideString;
ks: TStringList;
ok: Boolean;
DC: TcxDataController;
FRI: Integer;
begin
ok := False;
try // 1
mf := CreateSForm(self, 'fNew_Listeners', 'Договор', Add_Path + Name,
Panel_New_Listener, tdb_Apply);
StudentElementsEnabled(False);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.Value := VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_id_source.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Contract_Source_Finansing]
.ValueDisplay := VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_source.Index]);
DC := tv_listeners.DataController;
FRI := tv_listeners.DataController.FocusedRecordIndex;
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].Value := VarToStr
(DC.Values[FRI, tv_listeners_id_e.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO].ValueDisplay :=
VarToStr(DC.Values[FRI, tv_listeners_fio.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value :=
VarToStr(DC.Values[FRI, tv_listeners_id_ed_group.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].ValueDisplay :=
VarToStr(DC.Values[FRI, tv_listeners_ed_group.Index]);
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value := VarToStr
(DC.Values[FRI, tv_listeners_d_start.Index]);
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value := VarToStr
(DC.Values[FRI, tv_listeners_d_end_plan.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value := VarToStr(DC.Values[FRI,
tv_listeners_idkba_transfer.Index]);
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.ValueDisplay := VarToStr(DC.Values[FRI,
tv_listeners_kind_basis_action.Index]);
cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start].Value :=
VarToStr(DC.Values[FRI, tv_listeners_id_paragraph_start.Index]);
cW_New_Listener.wrappers[cxButtonEdit_New_Listener_Order_Start]
.ValueDisplay := VarToStr(DC.Values[FRI,
tv_listeners_status_text_order_start.Index]);
cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.Value := VarToStr(tv_r_c_plan.DataController.GetValue
(tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_money.Index));
cW_New_Listener.wrappers[cxCurrencyEdit_New_Listener_Contract_Money]
.ValueDisplay := tv_r_c_plan.DataController.GetDisplayText
(tv_r_c_plan.DataController.FocusedRecordIndex, tv_r_c_plan_money.Index);
cW_New_Listener.OnChangeWrapper(nil);
if mf.ShowModal = mrok then
begin // 2
if (VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]
.Value) <> '') and (cxPopupEdit_New_Listener_Order.Enabled) and
(VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]
.Value) = '') then
begin // 3
kind_order := VarToStr(cW_New_Listener.wrappers
[cxPopupEdit_New_Listener_Kind_Order].Value);
ks := TStringList.Create;
ks.Add(kind_order);
id_o := vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,
def_Ass, NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm, '',
False);
if id_o = EmptyWideStr then
begin // 4
ks.Free;
exit;
end; // 4
id_p := vnListAgent.LA_CreateList(ks, def_Ann, def_Basis, def_Note,
def_Ass, NewContextIndex, IDk_List, k_List_Name, ko_ID_Metaterm,
id_o, False);
ks.Free;
if id_p = EmptyWideStr then
exit;
// отправить на подпись.
vnListAgent.LA_Send_Signature(id_o, '', datetostr(now), True);
vnListAgent.LA_SetIdentifier(id_o, def_Ident, ID_Period_Nubbering,
id_NewSeries, NewSeries, def_IdenDate, True, False,
'Регистрация договора');
ok := MSystemServices.ExchangeData(Add_Contract,
VarArrayOf([cW_New_Listener.wrappers[cxPopupEdit_New_Listener_FIO]
.Value, cW_New_Listener.wrappers[
cxPopupEdit_New_Listener_Contract_Organization].Value,
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_Start].Value,
cW_New_Listener.wrappers[cxDateEdit_New_Listener_D_End].Value,
id_p, cW_New_Listener.wrappers[
cxPopupEdit_New_Listener_Contract_Source_Finansing].Value,
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_id_spec_div.Index]),
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Ed_Group].Value,
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Basis_Action]
.Value, cW_New_Listener.wrappers
[cxButtonEdit_New_Listener_Order_Start].Value,
VarToStr(cxCurrencyEdit_New_Listener_Contract_Money.EditValue),
VarToStr(DC.Values[FRI, tv_listeners_id_student.Index]),
cW_New_Listener.wrappers[cxTextEdit_New_Listener_Basis].Value,
cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO].Value,
cW_New_Listener.wrappers[cxTextEdit_New_Listener_FIO_R].Value,
cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Post].Value]));
end; // 3
if ok then
begin // 6
Get_SqlData_cxGrid(tv_listeners).Read_Data;
if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then
Fill_Contract_ParamsExecute(self);
end; // 6
end; // 2
finally // 1
if assigned(mf) then
begin // 7
FreeAndNil(mf);
StudentElementsEnabled(True);
end; // 7
end; // 1
end;
{ Забрать удостоверение}
procedure TForm_Event.Action_Delete_CertificateExecute(Sender: TObject);
Var L: tintegerlist; i: integer;
begin
if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Подтверждение удаления'
, 'Удалить выделенные удостоверения ('
+ IntToStr(tv_listeners.Controller.SelectedRowCount) + ')?')
then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do
begin
GetSelectedRecordIndexList(L);
MSystemServices.StartSequenceActions(False, True);
for i := 0 to L.Count - 1 do
if MSystemServices.ExchangeData(Delete_Certificate
, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_ID_Certificate.Index])])
, 'Не смогли удалить сертификат '
+ VarToStr(Values[L.Items[i], tv_listeners_certificate.Index]))
then
begin
Values[L.Items[i], tv_listeners_certificate.Index] := null;
Values[L.Items[i], tv_listeners_Cert_Date.Index] := null;
Values[L.Items[i], tv_listeners_Reg_Number.Index] := null;
Values[L.Items[i], tv_listeners_Kind_Cert.Index] := null;
Values[L.Items[i], tv_listeners_ID_Kind_Cert.Index] := null;
Values[L.Items[i], tv_listeners_ID_Certificate.Index] := null;
Values[L.Items[i], tv_listeners_ID_Doc_Cert.Index] := null;
Values[L.Items[i], tv_listeners_ID_Reg.Index] := null;
Values[L.Items[i], tv_listeners_hours.Index] := null;
end;
MSystemServices.EndSequenceActions;
end;
end;
procedure TForm_Event.Action_Delete_ContractExecute(Sender: TObject);
var
ID_C: string;
DC: TcxDataController;
ok: Boolean;
List: TIntegerList;
i: Integer;
begin
Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);
if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Удаление договоров',
'Вы действительно хотите удалить договора у выбранных студентов (' +
IntToStr(List.Count) + ')?') then
begin // 1
MSystemServices.StartSequenceActions(False, True);
DC := tv_listeners.DataController;
for i := 0 to (List.Count - 1) do
begin // 2
ID_C := VarToStr(DC.Values[List.Items[i],
tv_listeners_id_contract.Index]);
ok := MSystemServices.ExchangeData(Delete_Contract, VarArrayOf([ID_C]));
if ok then
begin // 3
DC.Values[List.Items[i], tv_listeners_id_contract.Index] := null;
DC.Values[List.Items[i],
tv_listeners_id_paragraph_contract.Index] := null;
DC.Values[List.Items[i], tv_listeners_org.Index] := null;
DC.Values[List.Items[i], tv_listeners_money.Index] := null;
DC.Values[List.Items[i], tv_listeners_NDS.Index] := null;
DC.Values[List.Items[i],
tv_listeners_status_text_contract.Index] := null;
end; // 3
end; // 2
MSystemServices.EndSequenceActions;
if ok then
cW_Contract_Params.ClearWrappers;
end; // 1
end;
{ Удалить выставленные начисления}
procedure TForm_Event.Action_Delete_NachExecute(Sender: TObject);
var i: integer; L: TIntegerlist;
begin
if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление начислений'
, 'Удалить выставленные начисления у выделенных договоров?')
then with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do
begin
GetSelectedRecordIndexList(L);
MSystemServices.StartSequenceActions(False, True);
for i := 0 to L.Count - 1 do
if MSystemServices.ExchangeData(Delete_Nach_By_ID_Dog
, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])])
, 'Не смогли удалить начисления')
then begin
Values[L.Items[i], tv_listeners_money.Index] := null;
Values[L.Items[i], tv_listeners_NDS.Index] := null;
end;
MSystemServices.EndSequenceActions;
if cxPageControl_Student.ActivePage = cxTabSheet_Stages
then Get_SqlData_cxGrid(TTree_Nach).Read_Data
else Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;
end;
end;
{ Удалить окончание}
procedure TForm_Event.Action_Delete_Order_EndExecute(Sender: TObject);
var
L: TIntegerList;
i: Integer;
begin
with Get_SqlData_cxGrid(tv_listeners) do
begin
GetSelectedRecordIndexList(L);
if HandymanFunctions.ShowVNDialog(vnd_Confirmation, 'Удаление приказа об окончании'
, 'Удалить приказы об окончании у выделенных слушателей ' + '(' + IntToStr(L.Count) + ')' +'?')
then with tv_listeners.DataController do
begin
MSystemServices.StartSequenceActions(False, True);
For i := 0 to L.Count - 1 do
if MSystemServices.DeleteData(d_P_ORDERS_STUDENTS
, CreateVarAr(['0', '1'])
, CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_student.Index])
, VarToStr(Values[L.Items[i], tv_listeners_ID_Paragraph_End.Index])])
, 'Не смогли удалить приказ об окончании.')
then begin
Values[L.Items[i], tv_listeners_ID_Paragraph_End.Index] := null;
Values[L.Items[i], tv_listeners_ID_Status_End.Index] := null;
Values[L.Items[i], tv_listeners_ID_ERP_End.Index] := null;
Values[L.Items[i], tv_listeners_status_text_order_end.Index] := null;
Get_SqlData_cxGrid(tv_listeners).IsFirstRead := True;
end;
MSystemServices.EndSequenceActions;
if cxPageControl_Student.ActivePage = cxTabSheet_Orders
then Fill_tv_ordersExecute(self);
end;
end;
end;
procedure TForm_Event.Action_End_EducationExecute(Sender: TObject);
const
Name = 'Окончание обучения';
var
mf: TSForm;
id: Integer;
List: TIntegerList;
i: Integer;
begin
try // 1
id := -1;
Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);
mf := CreateSForm(self, 'fEnd_Education', Name, Add_Path + Name,
Panel_End_Education, tdb_Apply);
cW_End_Education.wrappers[cxDateEdit_End_Education].Value := VarToStr
(tv_listeners.DataController.Values
[tv_listeners.DataController.FocusedRecordIndex,
tv_listeners_d_end_plan.Index]);
cW_End_Education.OnChangeWrapper(nil);
if mf.ShowModal = mrok then
begin // 2
if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Окончание обучения',
'Вы действительно хотите закончить обучение выбранных студентов (' +
IntToStr(List.Count) + ')?') then
begin // 3
MSystemServices.StartSequenceActions(False, True);
for i := 0 to (List.Count - 1) do
begin // 4
id := MSystemServices.InsertData(d_P_ORDERS_STUDENTS,
VarArrayOf([0, 1, 2, 3]),
VarArrayOf([tv_listeners.DataController.Values[List.Items[i],
tv_listeners_id_student.Index],
cW_End_Education.wrappers[cxButtonEdit_End_Education].Value,
cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value,
cW_End_Education.wrappers[cxDateEdit_End_Education].Value]),
'Окончание обучения.');
if id >= 0 then
begin // 5
tv_listeners.DataController.Values[List.Items[i],
tv_listeners_d_end.Index] := VarToStr
(cW_End_Education.wrappers[cxPopupEdit_KBA_End].Value);
tv_listeners.DataController.Values[List.Items[i],
tv_listeners_status_text_order_end.Index] := VarToStr
(cW_End_Education.wrappers[cxButtonEdit_End_Education]
.ValueDisplay);
end; // 5
end; // 4
MSystemServices.EndSequenceActions;
if id >= 0 then
TButtonOrderEditWrapper(cW_End_Education.wrappers
[cxButtonEdit_End_Education]).IsEmpty := False;
end; // 3
end; // 2
finally // 1
if assigned(mf) then
FreeAndNil(mf);
end; // 1
end;
{ Выдать сертификат}
procedure TForm_Event.Action_Go_New_CertExecute(Sender: TObject);
var i, j: integer;
begin
with Get_SqlData_cxGrid(tv_listeners), GridTableView.Controller, Cont_Make_Cert do
begin
j := 0;
for i := 0 to SelectedRowCount - 1 do
if MSystemServices.ExchangeData(Make_New_Cert_By_Params
, CreateVarAr([VarToStr(SelectedRows[i].Values[tv_listeners_id_student.Index])
,VarToStr(Wrappers[ButtonEdit_New_Cert].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value)
,VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value)
,VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value)])
, 'Не смогли выдать удостоверение.')
then
begin
j := j + 1;
{Values[L.Items[i], tv_listeners_Kind_Cert.Index] :=
VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].ValueDisplay);
Values[L.Items[i], tv_listeners_ID_Kind_Cert.Index] :=
VarToStr(Wrappers[PopupEdit_New_Cert_Kind_Doc].Value);
Values[L.Items[i], tv_listeners_Reg_Number.Index] :=
VarToStr(Wrappers[SpinEdit_New_Cert_Reg].Value);
Values[L.Items[i], tv_listeners_certificate.Index] :=
VarToStr(Wrappers[SpinEdit_New_Cert_Number].Value);
Values[L.Items[i], tv_listeners_hours.Index] :=
VarToStr(Wrappers[SpinEdit_New_Cert_Hours].Value);}
Wrappers[SpinEdit_New_Cert_Reg].Value := Wrappers[SpinEdit_New_Cert_Reg].Value + 1;
Wrappers[SpinEdit_New_Cert_Number].Value := Wrappers[SpinEdit_New_Cert_Number].Value + 1;
end;
// А что толку-то? Все равно id сертификатов неизвестны - придется перечитывать!
Read_Data;
HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат работы'
, 'Выдано удостоверений: ' + IntToStr(j));
end;
end;
{ Установить новую стоимость выделенных договоров}
procedure TForm_Event.Action_Go_New_MoneyExecute(Sender: TObject);
var i, j: integer; L: TIntegerlist;
begin
cw_New_Money.ChangesAcceptWrappers;
with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do
begin
GetSelectedRecordIndexList(L);
MSystemServices.StartSequenceActions(False, True);
CurrencyEdit_New_Money.Properties.EditFormat := '0.00';
CurrencyEdit_New_Money.Properties.UseThousandSeparator := False;
j := 0;
for i := 0 to L.Count - 1 do
if MSystemServices.ExchangeData(Update_PC
, VarArrayOf(['4'
, VarToStr(tv_listeners.DataController.Values
[L.Items[i], tv_listeners_id_contract.Index])
,''
,''
,''
,''
,''
,//VarToStr(cw_New_Money.Wrappers[CurrencyEdit_New_Money].Value) //
VarToStr(CurrencyEdit_New_Money.EditValue)
,''
,''
,''
,''
,''
,''
,''
,''])
, 'Не смогли изменить стоимость договора.')
then j := j + 1;
CurrencyEdit_New_Money.Properties.EditFormat := ',0.00';
CurrencyEdit_New_Money.Properties.UseThousandSeparator := True;
MSystemServices.EndSequenceActions;
if j > 0
then HandymanFunctions.ShowVNDialog(vnd_Information, 'Результат операции'
, 'Стоимость изменена в ' + IntToStr(j) + 'договорах.')
else HandymanFunctions.ShowVNDialog(vnd_Error, 'Результат операции'
, 'Не смогли изменить стоимость договоров');
end;
end;
{ Сформировать начисления}
procedure TForm_Event.Action_Go_New_NachExecute(Sender: TObject);
begin
Cont_New_Nach.ChangesAcceptWrappers;
with Cont_New_Nach, Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do
if MSystemServices.ExchangeData(Create_New_Nach
, CreateVarAr([VarToStr(Values[LastChoiceIndex, tv_listeners_id_contract.Index])
, VarToStr(Wrappers[DateEdit_New_Nach].Value)
, VarToStr(Wrappers[ButtonEdit_New_Nach].Value)]))
then
begin
Get_SqlData_cxGrid(TTree_Nach).Read_Data;
GetParentForm(Panel_New_Nach).ModalResult := mrok;
end;
end;
{ Уcтановить рамочный договор }
procedure TForm_Event.Action_Go_Set_Main_ContractExecute(Sender: TObject);
var
L: TIntegerList;
i: Integer;
begin
with Get_SqlData_cxGrid(tv_listeners), GridTableView.DataController do
begin
GetSelectedRecordIndexList(L);
MSystemServices.StartSequenceActions(False, True);
for i := 0 to L.Count - 1 do
if MSystemServices.UpdateData(d_P_CONTRACTS, CreateVarAr(['8']),
CreateVarAr([VarToStr(cW_Set_Main_Contract.wrappers
[PopupEdit_Set_Main_Contract].Value)]), CreateVarAr(['0']),
CreateVarAr([VarToStr(Values[L.Items[i], tv_listeners_id_contract.Index])])) then
begin
Values[L.Items[i], tv_listeners_ID_Contract_Main.Index] := VarToStr
(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract].Value);
Values[L.Items[i], tv_listeners_Main_Contract.Index] := VarToStr
(cW_Set_Main_Contract.wrappers[PopupEdit_Set_Main_Contract]
.ValueDisplay);
Values[L.Items[i], tv_listeners_Org_Contract_Main.Index] := VarToStr
(TTree_Main_Contracts.DataController.Values
[TTree_Main_Contracts.DataController.FocusedRecordIndex,
Tree_Main_Contracts_Org_Name.Index]);
end;
MSystemServices.EndSequenceActions;
end;
end;
{ Дата поиска рамочных договоров }
procedure TForm_Event.Filter_MC_Changed(
Sender: TObject);
begin
if (Get_SqlData_cxGrid(TTree_MC) <> nil)
//and (PageControl_Main.ActivePageIndex = 3)
then
with cw_Filter_Contracts_Main, Get_SqlData_cxGrid(TTree_MC) do
if (Parameters[1] <> VarToStr(Wrappers[DateEdit_Filter_Start].Value))
or (Parameters[2] <> VarToStr(Wrappers[DateEdit_Filter_End].Value))
or (Parameters[3] <> VarToStr(Wrappers[PopupEdit_Filter_Org].Value))
then
begin
Parameters[1] := VarToStr(Wrappers[DateEdit_Filter_Start].Value);
Parameters[2] := VarToStr(Wrappers[DateEdit_Filter_End].Value);
Parameters[3] := VarToStr(Wrappers[PopupEdit_Filter_Org].Value);
Read_Data;
end
else Read_Data_First;
end;
procedure TForm_Event.DateEdit_Set_Main_Contract_FindPropertiesEditValueChanged
(Sender: TObject);
begin
if cW_Set_Main_Contract <> nil then
if Get_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1] <> VarToStr
(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value)
then
begin
Get_SqlData_cxGrid(TTree_Main_Contracts).Parameters[1] := VarToStr
(cW_Set_Main_Contract.wrappers[DateEdit_Set_Main_Contract_Find].Value);
Get_SqlData_cxGrid(TTree_Main_Contracts).IsFirstRead := True;
end;
end;
procedure TForm_Event.Delete_tv_listenersExecute(Sender: TObject);
var
c: Boolean;
ok: Boolean;
List: TIntegerList;
i: Integer;
begin
Get_SqlData_cxGrid(tv_listeners).GetSelectedRecordIndexList(List);
if (List.Count > 0) and HandymanFunctions.ShowVNDialog(vnd_Confirmation,
'Удаление студентов',
'Вы действительно хотите удалить выбранных студентов вместе с договором ('
+ IntToStr(List.Count) + ')?') then
begin // 1
MSystemServices.StartSequenceActions(False, True);
for i := 0 to (List.Count - 1) do
begin // 2
c := VarToStr(tv_listeners.DataController.Values[List.Items[i],
tv_listeners_id_contract.Index]) <> '';
ok := MSystemServices.ExchangeData(Delete_Student,
VarArrayOf([VarToStr(tv_listeners.DataController.Values[List.Items[i],
tv_listeners_id_contract.Index]),
VarToStr(tv_listeners.DataController.Values[List.Items[i],
tv_listeners_id_student.Index])]), 'Удаление студента.');
{if ok and c then
MSystemServices.ExchangeData(Delete_Contract,
VarArrayOf
([VarToStr(tv_listeners.DataController.Values[List.Items[i],
tv_listeners_id_contract.Index])]), 'Удаление договора.');}
end; // 2
MSystemServices.EndSequenceActions;
if ok then
Get_SqlData_cxGrid(tv_listeners).Read_Data;
end; // 1
end;
procedure TForm_Event.DoChanged_cW_Contract_Params
(AWrapper: TCustomEditWrapper);
var
PEnabled, REnabled: Boolean;
begin
if AWrapper = cW_Contract_Params.wrappers[cxPopupEdit_PC_Org] then
begin // 1
REnabled := (cxPopupEdit_PC_Org.Text <> '') and REdit_Event;
ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);
end; // 1
if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then
begin // 2
PEnabled := (cxButtonEdit_PC_Contract.Text <> '') and REdit_Event;
REnabled := PEnabled and (cxPopupEdit_PC_Org.Text <> '');
ContractParamsEnabled(cxGroupBox_Contract_Params, PEnabled);
ContractParamsEnabled(cxGroupBox_PC_Representative, REnabled);
end; // 2
cxButton_PC_Autorepresentative.Enabled := cxGroupBox_Contract_Params.Enabled;
if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Contract] then
cxPopupEdit_PC_Kind_Order.Enabled := not AWrapper.IsClear;
if AWrapper = cW_Contract_Params.wrappers[cxButtonEdit_PC_Direction] then
cxPopupEdit_PC_Kind_Direction.Enabled := not AWrapper.IsClear;
end;
procedure TForm_Event.DoChanged_cW_New_Direction(AWrapper: TCustomEditWrapper);
begin
MakeEnable_OkButton(Panel_New_Direction,
cW_New_Direction.IsNotEmptyMandatory);
end;
procedure TForm_Event.DoChanged_cW_End_Education(AWrapper: TCustomEditWrapper);
begin
cxPopupEdit_KBA_End.Enabled := not cW_End_Education.wrappers
[cxButtonEdit_End_Education].IsClear;
MakeEnable_OkButton(Panel_End_Education,
cW_End_Education.IsNotEmptyMandatory);
end;
procedure TForm_Event.DoChanged_cW_Plan_Filters(AWrapper: TCustomEditWrapper);
begin
{ Если изменили план }
if AWrapper = cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan] then
begin // 1
{ Заполняем примечание и аннотацию плана }
if VarToStr(cW_Plan_Filters.wrappers[cxPopupEdit_Plan_Filters_Plan].Value)
<> '' then
begin // 2
cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := VarToStr
(tv_plan.DataController.Values
[tv_plan.DataController.FocusedRecordIndex, tv_plan_note.Index]);
cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value :=
VarToStr(tv_plan.DataController.Values
[tv_plan.DataController.FocusedRecordIndex, tv_plan_summary.Index]);
end // 2
else
begin // 3
cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Note].Value := '';
cW_Plan_Filters.wrappers[cxTextEdit_Plan_Filters_Summary].Value := '';
end; // 3
{ Перечитаем позиции плана (если требуется) }
Fill_tv_r_c_planExecute(self);
end; // 1
end;
procedure TForm_Event.DoChanged_cW_New_Listener(AWrapper: TCustomEditWrapper);
var
c, PE, R: Boolean;
begin
{ Ссылка на договор доступна, если введен вид договора }
c := VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Kind_Order]
.Value) <> '';
cxLabel16.Enabled := c;
cxPopupEdit_New_Listener_Order.Enabled := c;
{ Параметры договора доступны, введен вид договора и ссылка на договор пуста }
PE := c and (VarToStr(cW_New_Listener.wrappers[cxPopupEdit_New_Listener_Order]
.Value) = '');
ContractParamsEnabled(cxGroupBox_New_Listener_Contract_Params, PE);
cW_New_Listener.MakeObligatory([cxDateEdit_New_Listener_Contract_D_Start,
cxDateEdit_New_Listener_Contract_D_End,
cxPopupEdit_New_Listener_Contract_Source_Finansing,
cxCurrencyEdit_New_Listener_Contract_Money], PE);
{ Представитель организации доступен, если доступны параметры договора и выбрана организация }
R := PE and (VarToStr(cW_New_Listener.wrappers[
cxPopupEdit_New_Listener_Contract_Organization].Value) <> '');
ContractParamsEnabled(cxGroupBox_New_Listener_Representative, R);
MakeEnable_OkButton(Panel_New_Listener, cW_New_Listener.IsNotEmptyMandatory);
end;
{ Выбор записи в списке}
procedure TForm_Event.ChoiceGridRecord(Sender: TSqlData_cxGridTableView;
AGridRecord: TcxGridDataRow);
begin
if (Sender.GridTableView = tv_r_c_plan) then
if (Sender.LastChoiceIndex >= 0) and
(Sender.LastChoiceIndex <
Sender.GridTableView.DataController.RecordCount) then
begin // 1
{ Сменим дату начала и дату окончания в сроках проведения }
cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_Start].Value :=
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_d_start.Index]);
cW_New_R_C_Group.wrappers[cxDateEdit_New_R_C_Group_D_End].Value :=
VarToStr(tv_r_c_plan.DataController.Values
[tv_r_c_plan.DataController.FocusedRecordIndex,
tv_r_c_plan_d_end.Index]);
{ Обновим списки в зависимости от активной страницы }
if PageControl_Main.ActivePage = cxTabSheet_R_C_Groups then
Fill_tv_r_c_groupsExecute(self);
if PageControl_Main.ActivePage = cxTabSheet_Listeners then
Fill_tv_listenersExecute(self);
end; // 1
// Выбор текущей учебной группы для обновления списка кураторов
if (Sender.GridTableView = tv_r_c_groups) then
with Get_SqlData_cxGrid(TTree_Curator) do
if (Sender.LastChoiceIndex >= 0) and
(Sender.LastChoiceIndex <
Sender.GridTableView.DataController.RecordCount) then
begin
Action_New_Curator.Enabled := REdit_Event;
if Parameters[1] <> VarToStr
(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,
tv_r_c_groups_id_ed_group.Index]) then
begin
Parameters[1] := VarToStr
(Sender.GridTableView.DataController.Values
[Sender.LastChoiceIndex, tv_r_c_groups_id_ed_group.Index]);
Read_Data;
end
else
Read_Data_First;
end
else
begin
Parameters[1] := '';
ClearData;
Action_New_Curator.Enabled := False;
end;
end;
procedure TForm_Event.OnChoiceGridRecord_tv_listeners
(Sender: TSqlData_cxGridTableView; AGridRecord: TcxGridDataRow);
begin
if (Sender <> nil) then
if (Sender.LastChoiceIndex >= 0) and
(Sender.LastChoiceIndex <
Sender.GridTableView.DataController.RecordCount)
then with Sender.GridTableView.DataController do
begin // 1
if cxPageControl_Student.ActivePage = cxTabSheet_Orders then
Fill_tv_ordersExecute(self);
if cxPageControl_Student.ActivePage = cxTabSheet_Anketa then
Fill_AnketaExecute(self);
if cxPageControl_Student.ActivePage = cxTabSheet_Contracts then
Fill_Contract_ParamsExecute(self);
if Get_SqlData_cxGrid(TTree_Nach).Parameters[1] <>
VarToStr(Values[Sender.LastChoiceIndex, tv_listeners_id_contract.Index])
then begin
Get_SqlData_cxGrid(TTree_Nach).Parameters[1] :=
VarToStr(Values[Sender.LastChoiceIndex, tv_listeners_id_contract.Index]);
Get_SqlData_cxGrid(TTree_Nach).IsFirstRead := True;
if cxPageControl_Student.ActivePage = cxTabSheet_Stages
then Get_SqlData_cxGrid(TTree_Nach).Read_Data_First;
end;
Label_FIO.Caption := VarToStr
(Sender.GridTableView.DataController.Values[Sender.LastChoiceIndex,
tv_listeners_fio.Index]);
end // 1
else
begin
Label_FIO.Caption := Choice_Listener;
case cxPageControl_Student.ActivePageIndex of
0:begin
Get_SqlData_cxGrid(tv_orders).Params[0] := '';
Get_SqlData_cxGrid(tv_orders).ClearData;
end;
1:Current_Form_Anketa.ID_E := '';
2:Clear_Contract.Execute;
3:begin
Get_SqlData_cxGrid(TTree_Nach).Parameters[1] := '';
Get_SqlData_cxGrid(TTree_Nach).ClearData;
end;
end;
Подобные документы
Разработка приложения, автоматизирующего технологию формирования документов об окончании, для совершенствования организации работы учебных отделов, кафедр и отдела аттестации университета. Требования к разрабатываемому приложению, его архитектура.
дипломная работа [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