From de67a00e751c01459a5c81c529c38c3467536162 Mon Sep 17 00:00:00 2001 From: "pagewiz@naver.com" Date: Tue, 19 Nov 2024 10:52:51 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=83=80=EC=85=8B=20?= =?UTF-8?q?=EB=8D=B0=EB=AA=A8=201.=20Tag=EB=A5=BC=20=ED=99=9C=EC=9A=A9?= =?UTF-8?q?=ED=95=9C=20=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81=202.=20Interfa?= =?UTF-8?q?ce=EB=A5=BC=20=ED=99=9C=EC=9A=A9=ED=95=9C=20DataSet=20State=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/MainUnit.dfm | 399 +++++++++++ source/MainUnit.pas | 114 ++++ source/controller/DataUnit.dfm | 456 +++++++++++++ source/controller/DataUnit.pas | 80 +++ source/model/Employee.Model.pas | 16 + source/직원관리.dpr | 17 + source/직원관리.dproj | 1123 +++++++++++++++++++++++++++++++ source/직원관리.dproj.local | 21 + source/직원관리.identcache | Bin 0 -> 383 bytes source/직원관리.res | Bin 0 -> 154768 bytes source/직원관리.skincfg | 61 ++ 11 files changed, 2287 insertions(+) create mode 100644 source/MainUnit.dfm create mode 100644 source/MainUnit.pas create mode 100644 source/controller/DataUnit.dfm create mode 100644 source/controller/DataUnit.pas create mode 100644 source/model/Employee.Model.pas create mode 100644 source/직원관리.dpr create mode 100644 source/직원관리.dproj create mode 100644 source/직원관리.dproj.local create mode 100644 source/직원관리.identcache create mode 100644 source/직원관리.res create mode 100644 source/직원관리.skincfg diff --git a/source/MainUnit.dfm b/source/MainUnit.dfm new file mode 100644 index 0000000..c020efe --- /dev/null +++ b/source/MainUnit.dfm @@ -0,0 +1,399 @@ +object frmMain: TfrmMain + Left = 0 + Top = 0 + Caption = 'DataSet '#49892#49845 + ClientHeight = 685 + ClientWidth = 816 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [] + Position = poScreenCenter + OnCreate = FormCreate + TextHeight = 15 + object lcMain: TdxLayoutControl + Left = 0 + Top = 0 + Width = 816 + Height = 665 + Align = alClient + TabOrder = 0 + LayoutLookAndFeel = dxLayoutSkinLookAndFeel1 + object btnAdd: TcxButton + Left = 401 + Top = 12 + Width = 75 + Height = 35 + Action = acAdd + TabOrder = 0 + end + object btnEdit: TcxButton + Left = 483 + Top = 12 + Width = 75 + Height = 35 + Action = acEdit + TabOrder = 1 + end + object btnDelete: TcxButton + Left = 565 + Top = 12 + Width = 75 + Height = 35 + Action = acDelete + TabOrder = 2 + end + object btnPost: TcxButton + Left = 647 + Top = 12 + Width = 75 + Height = 35 + Action = acSave + TabOrder = 3 + end + object btnCancel: TcxButton + Left = 729 + Top = 12 + Width = 75 + Height = 35 + Action = acCancel + TabOrder = 4 + end + object grdEmployee: TcxGrid + Left = 12 + Top = 175 + Width = 792 + Height = 478 + TabOrder = 10 + object dbtvEmployee: TcxGridDBTableView + Navigator.Buttons.CustomButtons = <> + ScrollbarAnnotations.CustomAnnotations = <> + DataController.DataSource = dmData.dsEmployee + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsData.CancelOnExit = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsView.ColumnAutoWidth = True + OptionsView.GroupByBox = False + object dbtvEmployeeRecId: TcxGridDBColumn + DataBinding.FieldName = 'RecId' + Visible = False + end + object dbtvEmployeename: TcxGridDBColumn + Caption = #51060#47492 + DataBinding.FieldName = 'name' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeage: TcxGridDBColumn + Caption = #45208#51060 + DataBinding.FieldName = 'age' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeposition: TcxGridDBColumn + Caption = #51649#50948 + DataBinding.FieldName = 'position' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taCenter + Width = 41 + end + object dbtvEmployeesalary: TcxGridDBColumn + Caption = #44553#50668 + DataBinding.FieldName = 'salary' + PropertiesClassName = 'TcxCurrencyEditProperties' + HeaderAlignmentHorz = taCenter + end + object dbtvEmployeeaddress: TcxGridDBColumn + Caption = #51452#49548 + DataBinding.FieldName = 'address' + HeaderAlignmentHorz = taCenter + end + end + object grdEmployeeLevel1: TcxGridLevel + GridView = dbtvEmployee + end + end + object dbteName: TcxDBTextEdit + Left = 55 + Top = 93 + AutoSize = False + DataBinding.DataField = 'name' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 5 + Height = 27 + Width = 157 + end + object dbseAge: TcxDBSpinEdit + Left = 248 + Top = 93 + AutoSize = False + DataBinding.DataField = 'age' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 6 + Height = 27 + Width = 157 + end + object dbtePosition: TcxDBTextEdit + Left = 441 + Top = 93 + AutoSize = False + DataBinding.DataField = 'position' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 7 + Height = 27 + Width = 156 + end + object dbseSalary: TcxDBSpinEdit + Left = 633 + Top = 93 + AutoSize = False + DataBinding.DataField = 'salary' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 8 + Height = 27 + Width = 157 + end + object dbteAddress: TcxDBTextEdit + Left = 55 + Top = 127 + DataBinding.DataField = 'address' + DataBinding.DataSource = dmData.dsEmployee + Style.HotTrack = False + Style.TransparentBorder = False + TabOrder = 9 + Width = 735 + end + object lgRoot: TdxLayoutGroup + AlignHorz = ahClient + AlignVert = avClient + Hidden = True + ItemIndex = 1 + ShowBorder = False + Index = -1 + end + object lgToolbar: TdxLayoutGroup + Parent = lgRoot + CaptionOptions.Text = 'New Group' + CaptionOptions.Visible = False + ItemIndex = 4 + LayoutDirection = ldHorizontal + ShowBorder = False + Index = 0 + end + object lgInput: TdxLayoutGroup + Parent = lgRoot + CaptionOptions.Text = #52628#44032' / '#54200#51665 + ItemIndex = 1 + Index = 1 + end + object lgGrid: TdxLayoutGroup + Parent = lgRoot + AlignVert = avClient + CaptionOptions.Text = 'New Group' + CaptionOptions.Visible = False + ShowBorder = False + Index = 2 + end + object liAdd: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton1' + CaptionOptions.Visible = False + Control = btnAdd + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 0 + end + object liEdit: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton2' + CaptionOptions.Visible = False + Control = btnEdit + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 1 + end + object liDelete: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton3' + CaptionOptions.Visible = False + Control = btnDelete + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 2 + end + object liSave: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton4' + CaptionOptions.Visible = False + Control = btnPost + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Enabled = False + Index = 3 + end + object liCancel: TdxLayoutItem + Parent = lgToolbar + AlignHorz = ahRight + CaptionOptions.Text = 'cxButton5' + CaptionOptions.Visible = False + Control = btnCancel + ControlOptions.OriginalHeight = 35 + ControlOptions.OriginalWidth = 75 + ControlOptions.ShowBorder = False + Index = 4 + end + object liGird: TdxLayoutItem + Parent = lgGrid + AlignHorz = ahClient + AlignVert = avClient + CaptionOptions.Text = 'cxGrid1' + CaptionOptions.Visible = False + Control = grdEmployee + ControlOptions.OriginalHeight = 200 + ControlOptions.OriginalWidth = 250 + ControlOptions.ShowBorder = False + Index = 0 + end + object dxLayoutItem2: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #51060#47492 + Control = dbteName + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 0 + end + object dxLayoutItem3: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #45208#51060 + Control = dbseAge + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 1 + end + object dxLayoutItem4: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #51649#50948 + Control = dbtePosition + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 2 + end + object dxLayoutItem5: TdxLayoutItem + Parent = dxLayoutAutoCreatedGroup1 + AlignHorz = ahClient + CaptionOptions.Text = #44553#50668 + Control = dbseSalary + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 3 + end + object dxLayoutItem6: TdxLayoutItem + Parent = lgInput + CaptionOptions.Text = #51452#49548 + Control = dbteAddress + ControlOptions.OriginalHeight = 27 + ControlOptions.OriginalWidth = 121 + ControlOptions.ShowBorder = False + Index = 1 + end + object dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup + Parent = lgInput + LayoutDirection = ldHorizontal + Index = 0 + end + end + object sbMain: TdxStatusBar + Left = 0 + Top = 665 + Width = 816 + Height = 20 + Panels = < + item + PanelStyleClassName = 'TdxStatusBarTextPanelStyle' + end> + end + object acToolbar: TActionList + Images = dmData.ilSmallIcons + Left = 288 + Top = 8 + object acAdd: TAction + Tag = 1 + Caption = #52628#44032 + ImageIndex = 0 + OnExecute = DataSetCRUD + end + object acEdit: TAction + Tag = 2 + Caption = #49688#51221 + ImageIndex = 1 + OnExecute = DataSetCRUD + end + object acDelete: TAction + Tag = 3 + Caption = #49325#51228 + ImageIndex = 2 + OnExecute = DataSetCRUD + end + object acSave: TAction + Tag = 4 + Caption = #51200#51109 + Enabled = False + ImageIndex = 3 + OnExecute = DataSetCRUD + end + object acCancel: TAction + Tag = 5 + Caption = #52712#49548 + ImageIndex = 4 + OnExecute = DataSetCRUD + end + end + object scTheme: TdxSkinController + NativeStyle = False + SkinName = 'WXI' + SkinPaletteName = 'Clearness' + Left = 72 + Top = 8 + end + object dxLayoutLookAndFeelList: TdxLayoutLookAndFeelList + Left = 176 + Top = 8 + object dxLayoutSkinLookAndFeel1: TdxLayoutSkinLookAndFeel + PixelsPerInch = 96 + end + end +end diff --git a/source/MainUnit.pas b/source/MainUnit.pas new file mode 100644 index 0000000..9958388 --- /dev/null +++ b/source/MainUnit.pas @@ -0,0 +1,114 @@ +unit MainUnit; + +interface + +uses + { Delphi } + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Actions, Vcl.ActnList, System.ImageList, Vcl.ImgList, + Vcl.Menus, Vcl.StdCtrls, Data.DB, + { DevExpress } + dxForms, cxGraphics, dxUIAClasses, cxControls, dxLayoutControlAdapters, dxLayoutContainer, + cxButtons, cxClasses, dxLayoutControl, cxStyles, cxCustomData, cxFilter, cxData, + cxDataStorage, cxEdit, cxNavigator, dxDateRanges, dxScrollbarAnnotations, cxDBData, + cxGridLevel, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxGrid, dxmdaset, dxLayoutcxEditAdapters, cxTextEdit, cxCurrencyEdit, cxContainer, + cxImageList, cxMaskEdit, cxSpinEdit, cxDBEdit, dxCore, dxStatusBar, + { DevExpress Skin } + cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinWXI, dxLayoutLookAndFeels, dxSkinsForm, + { Custom } + DataUnit; + +type + TfrmMain = class(TdxForm, IDataStateNotifier) + lgRoot: TdxLayoutGroup; + lcMain: TdxLayoutControl; + lgToolbar: TdxLayoutGroup; + lgInput: TdxLayoutGroup; + lgGrid: TdxLayoutGroup; + btnAdd: TcxButton; + liAdd: TdxLayoutItem; + btnEdit: TcxButton; + liEdit: TdxLayoutItem; + btnDelete: TcxButton; + liDelete: TdxLayoutItem; + btnPost: TcxButton; + liSave: TdxLayoutItem; + btnCancel: TcxButton; + liCancel: TdxLayoutItem; + dbtvEmployee: TcxGridDBTableView; + grdEmployeeLevel1: TcxGridLevel; + grdEmployee: TcxGrid; + liGird: TdxLayoutItem; + dbtvEmployeeRecId: TcxGridDBColumn; + dbtvEmployeename: TcxGridDBColumn; + dbtvEmployeeage: TcxGridDBColumn; + dbtvEmployeeposition: TcxGridDBColumn; + dbtvEmployeesalary: TcxGridDBColumn; + dbtvEmployeeaddress: TcxGridDBColumn; + dbteName: TcxDBTextEdit; + dxLayoutItem2: TdxLayoutItem; + dbseAge: TcxDBSpinEdit; + dxLayoutItem3: TdxLayoutItem; + dbtePosition: TcxDBTextEdit; + dxLayoutItem4: TdxLayoutItem; + dbseSalary: TcxDBSpinEdit; + dxLayoutItem5: TdxLayoutItem; + dbteAddress: TcxDBTextEdit; + dxLayoutItem6: TdxLayoutItem; + dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup; + acToolbar: TActionList; + acAdd: TAction; + acEdit: TAction; + acDelete: TAction; + acSave: TAction; + acCancel: TAction; + scTheme: TdxSkinController; + dxLayoutLookAndFeelList: TdxLayoutLookAndFeelList; + dxLayoutSkinLookAndFeel1: TdxLayoutSkinLookAndFeel; + sbMain: TdxStatusBar; + procedure DataSetCRUD(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + procedure NotifyDataSetStateChange(const AState: TDataSetState); + public + { Public declarations } + end; + +var + frmMain: TfrmMain; + +implementation + +{$R *.dfm} + +procedure TfrmMain.DataSetCRUD(Sender: TObject); +// action에 Tag로 하나의 함수로 리펙토링 +begin + var Tag:= TAction(Sender).Tag; + Case Tag of + 1: // 추가 + begin + dmData.mdEmployee.Append; + dbteName.SetFocus; + end; + 2: dmData.mdEmployee.Edit; // 수정 + 3: dmData.mdEmployee.Delete; // 삭제 + 4: dmData.mdEmployee.Post; // 저장 + 5: dmData.mdEmployee.Cancel; // 취소 + End; +end; + +procedure TfrmMain.FormCreate(Sender: TObject); +begin + // DataSet State를 DataUnit으로 분리(유닛간 결합도를 분리) 리펙토링 + if Assigned(dmData) then + dmData.SetNotifier(Self); +end; + +procedure TfrmMain.NotifyDataSetStateChange(const AState: TDataSetState); +begin + acSave.Enabled:= Not(AState in [dsBrowse]); +end; + +end. diff --git a/source/controller/DataUnit.dfm b/source/controller/DataUnit.dfm new file mode 100644 index 0000000..f1b1b04 --- /dev/null +++ b/source/controller/DataUnit.dfm @@ -0,0 +1,456 @@ +object dmData: TdmData + OnCreate = DataModuleCreate + Height = 332 + Width = 408 + object mdEmployee: TdxMemData + Indexes = <> + Persistent.Data = { + 5665728FC2F5285C8FFE3F050000000A000000010005006E616D650002000000 + 02000400616765000500000001000900706F736974696F6E0004000000030007 + 0073616C61727900320000000100080061646472657373000106000000C8ABB1 + E6B5BF011F000104000000B4EBB8AE0140E133000112000000BACEBBEA20B5BF + B7A1B1B820B8EDC0E5B5BF0106000000B1E8B8BBB5BF012A000104000000B0FA + C0E501401640000112000000BACEBBEA20C7D8BFEEB4EBB1B820BFECB5BF} + SortOptions = [] + Left = 208 + Top = 80 + object mdEmployeename: TStringField + FieldName = 'name' + Size = 10 + end + object mdEmployeeage: TSmallintField + FieldName = 'age' + end + object mdEmployeeposition: TStringField + FieldName = 'position' + Size = 5 + end + object mdEmployeesalary: TIntegerField + FieldName = 'salary' + end + object mdEmployeeaddress: TStringField + FieldName = 'address' + Size = 50 + end + end + object dsEmployee: TDataSource + AutoEdit = False + DataSet = mdEmployee + OnStateChange = dsEmployeeStateChange + Left = 112 + Top = 80 + end + object ilSmallIcons: TcxImageList + SourceDPI = 96 + FormatVersion = 1 + Left = 136 + Top = 160 + Bitmap = { + 494C010105000800040010001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000002000000001002000000000000020 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000010000130000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000201001E683908B10000000000000000000000000000 + 00000000000000000000000000002816036F0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000042A170372C36B0FF3D77610FF0000000000000000000000000000 + 0000000000000000000E4C2905974A2905970000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000905 + 00358C4D0BCED77610FFD77610FFD77610FF00000008010000120603002C180D + 02574E2B069ABC670EEFD77610FF0B06003B0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000E45260591D274 + 10FCD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FFD77610FFD77610FF703D08B8000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000160C0152AB5E0DE4D77610FFD776 + 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FFD77610FFAC5F0DE40201001C000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000001109014AA45A0DDFD77610FFD776 + 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776 + 10FF894B0BCC0302002200000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000B3E220489CF72 + 10FBD77610FFD77610FFD77610FFD77610FFC76E0FF6A45A0DDF623507AC170D + 0155000000030000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000703 + 002E83480AC7D77610FFD77610FFD77610FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000022414026ABE690FF0D77610FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000020100195F3407A90000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001F8C02F2229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF209202F6000000000000000000000000000000000000 + 000000000008071F0073166501CF219602FB219702FB176901D1072100760000 + 000A000000000000000000000000000000000000000000000000D77610FFD575 + 10FE211202650201001900000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000805052A73121289CF1B1BC9FB1B1BCAFB12128CD105052C760000 + 000A0000000000000000000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000000000000001 + 001B176902D1229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF186E + 02D60002001F0000000000000000000000000000000000000000D57510FE2112 + 026508040034BC670EEF321C037C000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 021B12128DD11B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1414 + 93D60000031F00000000000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000000000071767 + 02D0229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF186E02D60000000A00000000000000000000000000000000211202650804 + 0034BC670EEFD77610FFD77610FF321C037C0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000071212 + 8BD01B1BD1FF12128DD21717ADE81B1BD1FF1B1BD1FF1818B7EF111185CC1B1B + D1FF141493D60000000A000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000061C006E229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF07210076000000000000000000000000000000000000000EB664 + 0EEBD77610FFD77610FFD77610FFD77610FF321C037C00000000000000000000 + 00000000000000000000000000000000000000000000000000000505266E1B1B + D1FF131390D4000001140000052B1717ADE81717B2EC010108340000000E1111 + 80C81B1BD1FF05052C76000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000156001C9229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF176902D10000000000000000000000000000000000000000190D + 0257D07210FBD77610FFD77610FFD77610FFD77610FF321C037C000000000000 + 0000000000000000000000000000000000000000000000000000111182C91B1B + D1FF1818B7EF01010834000000000000052B0000072F000000000000052B1616 + A9E51B1BD1FF12128CD1000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000208E02F3229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229702FB00000000000000000000000000000000000000000000 + 0000190D0257D07210FBD77610FFD77610FFD77610FFD77610FF321C037C0000 + 00000000000000000000000000000000000000000000000000001919BDF31B1B + D1FF1B1BD1FF1818B7EF0101083400000000000000000000062D1717ADE81B1B + D1FF1B1BD1FF1B1BCAFB000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF0000000000000000000000001F8D02F3229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF219602FB00000000000000000000000000000000000000000000 + 000000000000190D0257D07210FBD77610FFD77610FFD77610FFD77610FF301A + 03790000000000000000000000000000000000000000000000001818BCF31B1B + D1FF1B1BD1FF1717B2EC0000072F00000000000000000000052B1717ADE81B1B + D1FF1B1BD1FF1A1AC9FB000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000145E01C7229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF166601CF00000000000000000000000000000000000000000000 + 00000000000000000000190D0257D07210FBD77610FFD77610FFCF7210FA150C + 015104020024000000000000000000000000000000000000000011117FC71B1B + D1FF1717B2EC0000072F000000000000072F01010834000000000000052B1717 + ADE81B1BD1FF121289CF000000000000000000000000229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C + 02FF229C02FF229C02FF229C02FF000000000000000000000000061B006B229C + 02FF229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF229C02FF071F007300000000000000000000000000000000000000000000 + 0000000000000000000000000000190D0257D07210FBCF7210FA150C0151120A + 014BCB7010F8311B037B000000000000000000000000000000000505246B1B1B + D1FF141494D7000001170000072F1717B2EC1818B7EF01010834000001141212 + 8DD21B1BD1FF05052A73000000000000000000000000229C02FF229C02FF229C + 02FF000000000000000000000000000000000000000000000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000061663 + 01CC229C02FF229C02FF229C02FF0000000000000000229C02FF229C02FF229C + 02FF176902D10000000800000000000000000000000000000000000000000000 + 000000000000000000000000000000000000190D0257150C0151120A014BCB70 + 10F8D77610FFBD680EEF00000000000000000000000000000000000000061111 + 85CC1B1BD1FF141494D71717B2EC1B1BD1FF1B1BD1FF1818B7EF131390D41B1B + D1FF12128DD100000008000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF229C02FF229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000001 + 0017166301CC229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF1767 + 01D00001001B0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000001000017C56C0FF4D776 + 10FFC56C0FF40D07003F00000000000000000000000000000000000000000000 + 0117111185CC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1212 + 8BD00000021B00000000000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF00000000229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000000 + 000000000006061B006B145E01C71F8D02F31F8E02F3156001C9061C006E0000 + 0007000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000190D0257AF60 + 0DE60D07003F0000000000000000000000000000000000000000000000000000 + 0000000000060505246B11117FC71919BDF31919BDF3111182C90505266E0000 + 00070000000000000000000000000000000000000000229C02FF229C02FF229C + 02FF00000000229C02FF00000000229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF229C02FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001E8802EE229C02FF229C + 02FF00000000229C02FF229C02FF229C02FF229C02FF00000000000000000000 + 0000229C02FF229C02FF1F8C02F2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000200000000100010000000000000100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000} + DesignInfo = 10485896 + ImageInfo = < + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241 + 6464436972636C6564223E0D0A09093C7061746820636C6173733D2247726565 + 6E2220643D224D31362C3443392E342C342C342C392E342C342C313673352E34 + 2C31322C31322C31327331322D352E342C31322D31325332322E362C342C3136 + 2C347A204D32342C3138682D367636682D34762D364838762D34683656386834 + 763668365631387A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_AddCircled.svg' + Keywords = 'Icon Builder;Actions;AddCircled' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2245 + 646974223E0D0A09093C7061746820636C6173733D22426C75652220643D224D + 32372E362C382E326C2D332E382D332E38632D302E352D302E352D312E342D30 + 2E352D312E392C306C2D322E352C322E356C352E382C352E386C322E352D322E + 354332382E312C392E362C32382E312C382E382C32372E362C382E327A222F3E + 0D0A09093C706F6C79676F6E20636C6173733D22426C75652220706F696E7473 + 3D22342C323820392E382C323820342C32322E32202623393B222F3E0D0A0909 + 3C7265637420783D22352E382220793D2231332E3422207472616E73666F726D + 3D226D617472697828302E373037202D302E3730373220302E3730373220302E + 373037202D382E303732312031352E34303438292220636C6173733D22426C75 + 65222077696474683D2231372E3622206865696768743D22382E32222F3E0D0A + 093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_Edit.svg' + Keywords = 'Icon Builder;Actions;Edit' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061 + 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437 + 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646 + 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A + 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669 + 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66 + 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B + 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431 + 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2244 + 656C657465436972636C6564223E0D0A09093C7061746820636C6173733D2252 + 65642220643D224D31362C3443392E342C342C342C392E342C342C313673352E + 342C31322C31322C31327331322D352E342C31322D31325332322E362C342C31 + 362C347A204D32332E312C32302E326C2D322E382C322E384C31362C31382E38 + 6C2D342E322C342E3220202623393B2623393B6C2D322E382D322E386C342E32 + 2D342E326C2D342E322D342E326C322E382D322E386C342E322C342E326C342E + 322D342E326C322E382C322E384C31382E382C31364C32332E312C32302E327A + 222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\Icon Builder\Actions_DeleteCircled.svg' + Keywords = 'Icon Builder;Actions;DeleteCircled' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F637373223E2E477265656E7B + 66696C6C3A233033394332333B7D3C2F7374796C653E0D0A3C7061746820636C + 6173733D22477265656E2220643D224D32392C32682D35763130483856324833 + 43322E342C322C322C322E342C322C3376323663302C302E362C302E342C312C + 312C3168323663302E362C302C312D302E342C312D3156334333302C322E342C + 32392E362C322C32392C327A204D32342C32344838762D3620202623393B6831 + 365632347A204D31302C327638683856324831307A204D31342C38682D325634 + 683256387A222F3E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\XAF\Action_SaveScript.svg' + Keywords = 'XAF;Action;SaveScript' + end + item + ImageClass = 'TdxSmartImage' + Image.Data = { + 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554 + 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C + 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267 + 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77 + 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D + 22307078222076696577426F783D2230203020333220333222207374796C653D + 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332 + 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331 + 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66 + 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61 + 73733D22426C75652220643D224D33322C323863302C302C302D382D31362D38 + 76364C302C31364C31362C3676364333322C31322C33322C32382C33322C3238 + 7A222F3E0D0A3C2F7376673E0D0A} + FileName = 'SVG Images\XAF\Action_Cancel.svg' + Keywords = 'XAF;Action;Cancel' + end> + end +end diff --git a/source/controller/DataUnit.pas b/source/controller/DataUnit.pas new file mode 100644 index 0000000..289ffbc --- /dev/null +++ b/source/controller/DataUnit.pas @@ -0,0 +1,80 @@ +unit DataUnit; + +interface + +uses + { Delphi } + System.SysUtils, System.Classes, Data.DB, dxmdaset, System.ImageList, + Vcl.ImgList, Vcl.Controls, cxImageList, cxGraphics, + { Constom } + Employee.Model; + +type + /// MainUnit에서 DataSet State를 사용하기 위해 인터페이스로 전달 + IDataStateNotifier = interface + procedure NotifyDataSetStateChange(const AState: TDataSetState); + end; + + TdmData = class(TDataModule) + mdEmployee: TdxMemData; + mdEmployeename: TStringField; + mdEmployeeage: TSmallintField; + mdEmployeeposition: TStringField; + mdEmployeesalary: TIntegerField; + mdEmployeeaddress: TStringField; + dsEmployee: TDataSource; + ilSmallIcons: TcxImageList; + procedure dsEmployeeStateChange(Sender: TObject); + procedure DataModuleCreate(Sender: TObject); + private + FNotifier: IDataStateNotifier; + public + procedure SetNotifier(ANotifier: IDataStateNotifier); + /// Employee 전체 데이타 반환 + /// TArray TEmployee 레코드를 배열로 반환 + /// 예제함수 + function GetAllEmployee: TArray; + end; + +var + dmData: TdmData; + +implementation + +{$R *.dfm} + +procedure TdmData.DataModuleCreate(Sender: TObject); +begin + mdEmployee.Active:= True; +end; + +procedure TdmData.dsEmployeeStateChange(Sender: TObject); +begin + // DataSet 상태가 변할때 NotifyDataSetStateChange 메소드로 전달 + if Assigned(FNotifier) then + FNotifier.NotifyDataSetStateChange(dsEmployee.DataSet.State); +end; + +procedure TdmData.SetNotifier(ANotifier: IDataStateNotifier); +begin + FNotifier:= ANotifier; +end; + +function TdmData.GetAllEmployee: TArray; +begin + var Employees: TArray; + var i:= 0; + + SetLength(Employees, mdEmployee.RecordCount); + mdEmployee.First; + + while Not mdEmployee.EOF do + begin + Employees[i].Name:= mdEmployee.FieldByName('Name').AsString; + Inc(i); + mdEmployee.Next; + end; + + result:= Employees; +end; +end. diff --git a/source/model/Employee.Model.pas b/source/model/Employee.Model.pas new file mode 100644 index 0000000..5bbc131 --- /dev/null +++ b/source/model/Employee.Model.pas @@ -0,0 +1,16 @@ +unit Employee.Model; + +interface + +type + TEmployee = record + Name: string; + Age: integer; + Position: string; + Salary: integer; + Address: string; + end; + +implementation + +end. diff --git a/source/직원관리.dpr b/source/직원관리.dpr new file mode 100644 index 0000000..e4356a1 --- /dev/null +++ b/source/직원관리.dpr @@ -0,0 +1,17 @@ +program ; + +uses + Vcl.Forms, + MainUnit in 'MainUnit.pas' {frmMain}, + DataUnit in 'controller\DataUnit.pas' {dmData: TDataModule}, + Employee.Model in 'model\Employee.Model.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.MainFormOnTaskbar := True; + Application.CreateForm(TdmData, dmData); + Application.CreateForm(TfrmMain, frmMain); + Application.Run; +end. diff --git a/source/직원관리.dproj b/source/직원관리.dproj new file mode 100644 index 0000000..f82529e --- /dev/null +++ b/source/직원관리.dproj @@ -0,0 +1,1123 @@ + + + {EA31A137-83B2-4C28-B86E-FB0AB60319AC} + 20.2 + VCL + True + Debug + Win32 + 직원관리 + 3 + Application + 직원관리.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + ..\dcu\$(Platform)\$(Config) + ..\bin\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + 직원관리 + 1042 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + cxSchedulerRS29;dxPScxCommonRS29;dxRibbonRS29;DataSnapServer;vclwinx;dxPScxExtCommonRS29;dxRichEditControlCoreRS29;fmx;dxSpreadSheetReportDesignerRS29;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;dxComnRS29;dxFlowChartDesignerRS29;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dxBarExtDBItemsRS29;dbxcds;vcledge;cxVerticalGridRS29;FmxTeeUI;cxFireDACAdaptersRS29;dxPSDBTeeChartRS29;cxSchedulerWebServiceStorageRS29;DBXFirebirdDriver;dxRichEditControlRS29;dxPsPrVwAdvRS29;dacvcl290;FireDACSqliteDriver;DbxClientDriver;dxPSdxGaugeControlLnkRS29;soapmidas;dxRibbonCustomizationFormRS29;TeeUI;dbexpress;dxEMFRS29;dxDockingRS29;vquery290;inet;vcltouch;dxPSdxFCLnkRS29;dxorgcRS29;FireDACDBXDriver;dxSpreadSheetCoreConditionalFormattingDialogsRS29;fmxdae;dxPSRichEditControlLnkRS29;dxPSdxSpreadSheetLnkRS29;CustomIPTransport;FireDACMSSQLDriver;cxADOAdaptersRS29;dxPSPrVwRibbonRS29;IndySystem;dxPScxTLLnkRS29;dxPSdxDBOCLnkRS29;dxGDIPlusRS29;ibxbindings;vclFireDAC;dxPSCoreRS29;dxSpreadSheetRS29;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;cxGridEMFRS29;dxPSdxMapControlLnkRS29;dxGanttControlRS29;dxPScxVGridLnkRS29;dxPScxPivotGridLnkRS29;dxADOServerModeRS29;dxWizardControlRS29;bindcompdbx;rtl;FireDACMySQLDriver;dxCloudServiceLibraryRS29;cxIBXAdaptersRS29;dxServerModeRS29;DBXSqliteDriver;dxBarDBNavRS29;TMSVCLUIPackPkgDXE15;DBXSybaseASEDriver;dxSpreadSheetCoreRS29;dxNavBarRS29;vclimg;DataSnapFireDAC;unidacfmx290;inetdbxpress;FireDAC;xmlrtl;ibxpress;dxFireDACEMFRS29;dsnap;FireDACDb2Driver;dxPSdxLCLnkRS29;DBXOracleDriver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;DatasnapConnectorsFreePascal;dxPSLnksRS29;dxmdsRS29;dxPSdxOCLnkRS29;sgcWebSocketsD12;cxSchedulerGridRS29;dxPScxSchedulerLnkRS29;TMSLogging;emshosting;dxADOEMFRS29;dxChartControlRS29;dxPSdxDBTVLnkRS29;FireDACCommonDriver;dxGaugeControlRS29;IndyIPClient;dxPDFViewerRS29;bindcompvclwinx;dxOrgChartAdvancedCustomizeFormRS29;emsedge;bindcompfmx;TMSVCLUIPackPkgExDXE15;dxBarExtItemsRS29;crcontrols290;dxFlowChartLayoutsRS29;inetdb;dxdborRS29;ibmonitor;FireDACASADriver;Tee;dxPScxGridLnkRS29;cxPivotGridChartRS29;vclactnband;TMSVCLUIPackPkgXlsDXE15;fmxFireDAC;FireDACInfxDriver;dxRichEditCoreRS29;cxTreeListdxBarPopupMenuRS29;DBXMySQLDriver;dxFlowChartAdvancedCustomizeFormRS29;VclSmp;cxSchedulerRibbonStyleEventEditorRS29;DataSnapCommon;dxPSTeeChartRS29;fmxase;dxtrmdRS29;dxFlowChartRS29;TMSVCLUIPackPkgWizDXE15;DBXOdbcDriver;dbrtl;dxPScxPCProdRS29;FireDACOracleDriver;Skia.Package.FMX;TeeDB;FireDACMSAccDriver;cxGridRS29;dxSpellCheckerRS29;DataSnapIndy10ServerTransport;dxRichEditDocumentModelRS29;dxMapControlRS29;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;FireDACTDataDriver;cxLibraryRS29;Skia.Package.VCL;vcldb;dxPSdxPDFViewerLnkRS29;cxSchedulerTreeBrowserRS29;unidacvcl290;dacfmx290;bindcomp;dxTabbedMDIRS29;cxExportRS29;inetstn;IndyCore;RESTBackendComponents;dxHttpIndyRequestRS29;dxTileControlRS29;dxFireDACServerModeRS29;cxPivotGridOLAPRS29;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;adortl;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;dxCoreRS29;cxPivotGridRS29;dxdbtrRS29;dac290;DBXDb2Driver;dxSkinsCoreRS29;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dxBarRS29;tethering;bindcompvcl;DBXSybaseASADriver;CloudService;dxSpreadSheetConditionalFormattingDialogsRS29;cxTreeListRS29;FMXTee;soaprtl;unidac290;dxDBXServerModeRS29;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + cxSchedulerRS29;dxPScxCommonRS29;dxRibbonRS29;DataSnapServer;vclwinx;dxPScxExtCommonRS29;dxRichEditControlCoreRS29;fmx;dxSpreadSheetReportDesignerRS29;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;dxComnRS29;dxFlowChartDesignerRS29;appanalytics;IndyProtocols;vclx;dxBarExtDBItemsRS29;dbxcds;vcledge;cxVerticalGridRS29;FmxTeeUI;cxFireDACAdaptersRS29;dxPSDBTeeChartRS29;cxSchedulerWebServiceStorageRS29;DBXFirebirdDriver;dxRichEditControlRS29;dxPsPrVwAdvRS29;FireDACSqliteDriver;DbxClientDriver;dxPSdxGaugeControlLnkRS29;soapmidas;dxRibbonCustomizationFormRS29;TeeUI;dbexpress;dxEMFRS29;dxDockingRS29;inet;vcltouch;dxPSdxFCLnkRS29;dxorgcRS29;FireDACDBXDriver;dxSpreadSheetCoreConditionalFormattingDialogsRS29;fmxdae;dxPSRichEditControlLnkRS29;dxPSdxSpreadSheetLnkRS29;CustomIPTransport;FireDACMSSQLDriver;cxADOAdaptersRS29;dxPSPrVwRibbonRS29;IndySystem;dxPScxTLLnkRS29;dxPSdxDBOCLnkRS29;dxGDIPlusRS29;ibxbindings;vclFireDAC;dxPSCoreRS29;dxSpreadSheetRS29;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;cxGridEMFRS29;dxPSdxMapControlLnkRS29;dxGanttControlRS29;dxPScxVGridLnkRS29;dxPScxPivotGridLnkRS29;dxADOServerModeRS29;dxWizardControlRS29;bindcompdbx;rtl;FireDACMySQLDriver;dxCloudServiceLibraryRS29;cxIBXAdaptersRS29;dxServerModeRS29;DBXSqliteDriver;dxBarDBNavRS29;TMSVCLUIPackPkgDXE15;DBXSybaseASEDriver;dxSpreadSheetCoreRS29;dxNavBarRS29;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;xmlrtl;ibxpress;dxFireDACEMFRS29;dsnap;FireDACDb2Driver;dxPSdxLCLnkRS29;DBXOracleDriver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;DatasnapConnectorsFreePascal;dxPSLnksRS29;dxmdsRS29;dxPSdxOCLnkRS29;sgcWebSocketsD12;cxSchedulerGridRS29;dxPScxSchedulerLnkRS29;emshosting;dxADOEMFRS29;dxChartControlRS29;dxPSdxDBTVLnkRS29;FireDACCommonDriver;dxGaugeControlRS29;IndyIPClient;dxPDFViewerRS29;bindcompvclwinx;dxOrgChartAdvancedCustomizeFormRS29;emsedge;bindcompfmx;TMSVCLUIPackPkgExDXE15;dxBarExtItemsRS29;dxFlowChartLayoutsRS29;inetdb;dxdborRS29;ibmonitor;FireDACASADriver;Tee;dxPScxGridLnkRS29;cxPivotGridChartRS29;vclactnband;TMSVCLUIPackPkgXlsDXE15;fmxFireDAC;FireDACInfxDriver;dxRichEditCoreRS29;cxTreeListdxBarPopupMenuRS29;DBXMySQLDriver;dxFlowChartAdvancedCustomizeFormRS29;VclSmp;cxSchedulerRibbonStyleEventEditorRS29;DataSnapCommon;dxPSTeeChartRS29;fmxase;dxtrmdRS29;dxFlowChartRS29;DBXOdbcDriver;dbrtl;dxPScxPCProdRS29;FireDACOracleDriver;TeeDB;FireDACMSAccDriver;cxGridRS29;dxSpellCheckerRS29;DataSnapIndy10ServerTransport;dxRichEditDocumentModelRS29;dxMapControlRS29;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;FireDACTDataDriver;cxLibraryRS29;Skia.Package.VCL;vcldb;dxPSdxPDFViewerLnkRS29;cxSchedulerTreeBrowserRS29;bindcomp;dxTabbedMDIRS29;cxExportRS29;inetstn;IndyCore;RESTBackendComponents;dxHttpIndyRequestRS29;dxTileControlRS29;dxFireDACServerModeRS29;cxPivotGridOLAPRS29;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;adortl;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;dxCoreRS29;cxPivotGridRS29;dxdbtrRS29;DBXDb2Driver;dxSkinsCoreRS29;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dxBarRS29;tethering;bindcompvcl;DBXSybaseASADriver;CloudService;dxSpreadSheetConditionalFormattingDialogsRS29;cxTreeListRS29;FMXTee;soaprtl;dxDBXServerModeRS29;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + true + 1033 + + + PerMonitorV2 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
frmMain
+ dfm +
+ +
dmData
+ dfm + TDataModule +
+ + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + 직원관리.dpr + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + 직원관리.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + True + True + + + 12 + + + + +
diff --git a/source/직원관리.dproj.local b/source/직원관리.dproj.local new file mode 100644 index 0000000..6753e22 --- /dev/null +++ b/source/직원관리.dproj.local @@ -0,0 +1,21 @@ + + + + 1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.dfm=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.dfm + 1899-12-30 00:00:00.000.095,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.172,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.114,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.547,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.833,=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.842,=D:\Embarcadero\projects\WebModuleUnit1.pas + 1899-12-30 00:00:00.000.905,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\직원관리.dproj=D:\Embarcadero\projects\Project1.dproj + 1899-12-30 00:00:00.000.724,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas + 1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.pas=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.127,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\MainUnit.dfm=D:\Embarcadero\projects\Unit1.dfm + 1899-12-30 00:00:00.000.001,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.851,=D:\Embarcadero\projects\Unit1.pas + 1899-12-30 00:00:00.000.450,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\controller\DataUnit.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Unit1.pas + 1899-12-30 00:00:00.000.106,=D:\Embarcadero\projects\FormUnit1.pas + 1899-12-30 00:00:00.000.805,D:\Embarcadero\projects\스터디\20241117_데이타셋\source\Employee.Model.pas=D:\Embarcadero\projects\스터디\20241117_데이타셋\source\model\Employee.Model.pas + + diff --git a/source/직원관리.identcache b/source/직원관리.identcache new file mode 100644 index 0000000000000000000000000000000000000000..4d1087eb1b8e52f5fbcb7a76f7d0b25370fdb372 GIT binary patch literal 383 zcmZQ!U|)Er>I7Ubktrl#uog1G46 F0s!&Nm|p+@ literal 0 HcmV?d00001 diff --git a/source/직원관리.res b/source/직원관리.res new file mode 100644 index 0000000000000000000000000000000000000000..6dae4032ae110c35ac2f03686e22163fc0dbff33 GIT binary patch literal 154768 zcmeFZcT^Qi(>Gdsvyq&0jshx@K_!ErNDvSa6eZ`Jvt(2R2?COXND@)N905_xqF@dv zM$Dk7fGGQ`*@)qs=Xu||?poiv|J?R8-P2vas_L4a>8_gI2LM14GnG1%vHDkfMVjsB zL>j!nqykKoS)x}Y4XmyKJ8;3jrmzZYE5I67;`IvryA10@Iz<_o1|aY=JZ4J+S}y>> zaJJ`X6PRHG3He1rIQT&@_#ihw2m~+W91PwNf`qa(8Wqq$t(IWcKphB;)PNqbv-Bp2 zi2x58pHSrIhuC16n9~=ppM$-v$A}9RVEhBK1~K7?`c10}N=P%C0lD)by$w=@pl;#d z20^Hq35~A@wgn-r7yfm}o^X`z2A(vYA=v(>-1#(JXZUzR6jDZ_#wGbAQ(p+h?IZYh>7x?qQDOziF~M3x?l5vlk@jH zP{2Mz%qf^jsN?^XSQwRol}QuWnU?@3i#`bQX@CH)E{KWf13QZ;aImZZZZ;F(VP65F zLQ8?4(+VVnEr5}JHLx(Q!Ezn2GCBbl+bZB;TL=7Ht3Z(39z+D~k=6->xSc>;Xgx?t z7=w)1dYG@U6y#+rVZPiNkdtzPc`{C*s$>sp%Ijc}<{Hq~a{x`%b+Ba724I@w0n7}6 zC?^h=#4-Z}ICHR`1;V^rK};YU z>p8&Av>iB@D}k472ac}{xLC2yUWNDq%*9Ak0%C%Ncpu8~x(3IUf;j_J=4awK(m+Ec z7qm6D!UFjsm@8EYDvCQmZDA$0ZO3t!Bkx+wdvGr7MBR3xoSj&20B+Vstk(kttw!hLjl?-9RmH+!P{dS_zXU>qDq&+nF+_z|LVQdWSee&>rCAg5t%bF#_ki8X zgW#~b9YO+jqKthI=+}yvT@V@80I|{a5FObH!Tu+}YQ;rZv#JN&He83)w&wdE;Zzk<_U z@8Im&t8lLO4qUo)6V99-go_vN!a)ChxO;aHdb;1imCGY=^TrdnclQ|#K70%P*GJ*u zgHd?)>@B=`^B!J2AA`4V$Kcba&oKUV0;Z>@@x6hI%zsP$Co*Dla&vR@b7L}2-TZG< z|E0akD=;fRKR5qZDk?bfUr7Jm-0l5mLx6}p(`Um>O{wX{^zldN` zl%IS2-}HaCbowFO-#>x?&_F+>&(?Fg|EB-PRXoZj#ApA6{aMghykhM z?e7<{bu*?dTeoc9oI@CKRyx5hH}~uxkUy)o%u5iA|8(43f2AN-*PyVidB0iUEu}54 ze@lO0gWbzCiHQ>wmFZvVBpOrP- z(RQJTjtC5Fm|?)iFGQjHsQ?=r+p<~w*N-1Re*HFkHB)}z)e4CTCD4BUe%>_vK0baS z790TG9Grn@0n=H;xk4fpUwAb=+k)jCZZ|@-zqgO4m*+u(0XrMNfFSBm!CQb+@Spg? z!tG_lzZp!gQ}p)p@zVA3#H>%?S=a>lg_sEiDE|Rpl$(w3(DPHjI85-V>gsCiV%FBx zM)+DZ8NU!J@RPxB`MbOW{Uf463kq^`vP;K*F}TR1s;#Q3s!gPws6Gv^#7H-*!LRYJ z6Vmqfi--t~iH(ho+40MelXLilgp^cO)sTrA02&PqAf!adMx z+AGkz?$@+-X5r_@E+vA)44zMbUr7+>0KtLz4?NQGqoz1iZB?cIS-x*52*)1epbG0L z%xq`?ejz2^89YU9mTnyZN7aa=B*ZT|@v~!EoM@+ERCmv%BL+ZRsPdo&$m4H30ajK* zxPZ{5S;iY?x{ z5ei}E<3XMArlAQ0_yv%GAmta{fw0R@ynqnOKk^eljrt%pHVN>n5-JlDm#_g%g%z{o zcObYTo-m(~5Mp-E_DB-i%qXD5ivu9uerN+e6epx)F-zruYT->Lk}`4-;BTCjFG`q$ zrV_u9HX|`@h-Z)BfUV}U_!=c4J~o`BGc1&p`1kyQr;T5LpU+rTm3Vm&W0>K<_v`(! z4&SGO+N!9&k}&>L;=B42{~fg_UJ{{w02lcI${6DkKTeNK9K~ z;HA4@W)#1kzZw*Prdy~a$VQ=%#lFw-y+jBmCX|p+BfbC$8iIkYm!FQ}0v@Jc@@sHp z#H&taArBiJ{m3l*$5LSeOnWaN93%-T#QP9AczJvK|5|@`sVr1kxKNN+P>_eh@Ow{i z3(05Dg!%v%an>u-L=h}>b(3ZVRq)c1AP*Cr{O8$5>eNypoJ%td4iR{mc}L*OP>pym zt0vBpuHnJN#6%&pUY))3xQch+yNouUa1b;&wBX$&jDVw1Qd3g;HUDkNM50*V_+>fd z{6tAeSO{k`8c(QY1`le)6)J@Z|NfHy=KlTrk4OFl;{t3*zzJ!H_z4Ff^hV)?xwU_f ze|8*yl;2jMrYN2^f-Ar9=6IX%9j}jXdR^^b_WJ|(vpSKkP2dT*u#)L7I7WwPcx3QD z;>Qv^y=iDd|KHjZe3lTaAtqh@|E~W716^GoUBc9a0)I%y>h2jhF#vKNw6s zJsImudrG~${SmLEwCZ1QfJ#Dn;s)r(U4HTYXL|YUVQ)!POjeE#acjLiy#uuo{%`37 zKbj3@_9pl=>w0>6dHeYVMnr}pJeM{#upv-e=wD<1r3~@>(4HXzj>6EH!VOG#R(5^_ zac{hEGZCTv_l^67rBy752auLLJ$<~9IwB?%z0kZ|0NiG*Z`v*Z404~|*8%-U(zezWDzNX>6McM}ZJ?lgvY!)Od7e%~h=0Po-IeIy8J_Z1}= z5be}%L{ppD|BNG(38wJRII;@1xnlm`;>fH_TEM}oL5m}^GwT8;t3Jk&HG!W;2V=^* zz{YHdvE=0#Gc>|@vMKO#m|$s!u}gC-E%Dk41h`Exo@j;fPHT)SufZ6pEyjKwk?#hK zH`*cA7Gs{aNN##{qv@n;qWBK{l;tPJspOU5{9IAX(5_ejJ?0Y5Ds9gg&oATAh= z{NgbuBEJN@jssZRiY5tf-Gf%Ez(j6Ej+8{=k-GiPC$1AOdRC@&Rr2I`Os zBD|?sX5tvOU|TNMi8yl>2x8osohcvVz@<2beAIh8=3>NSyqTqj7H<~#8E+Qm-3|g6 zYZl)^4XxFlz}>?fZpQGn73i9Js%VmN|0|e+GHp4{xiPZfPCw* zy#?D_P!MtZ1f_Yk7`tx7c=K^ETe=D3@oBJp zX*rmiVocd)2gZFXz|A=uW67H^ZvlUwTnG!!g^2LY5FSQcmqJirIkuHRTud<}#uM@5 za)^zrfsOGM7(3n#4t5P-Z`THX-t`dRTaWSPW{exxV%)e9@BR zFoxWT@#sU?zaNq}?uUrbPS9U+4iaL|LR|D!q`d$kfj6;!2U0ecVQje>(vt5%dRhf! zZLWsg>;{Y}?}gHmMkv|Q0+kiJVcXUYC@wk#MHmS!EjbF+l}Dj|*Fk7*Iu5&=k3(&B zKXkO8g=5Fg!pReTaO}u!=sNWnjvsxA*KaY7d>_u9xdB(N-hvC~AHvlu_u zM{Dwmii?W!YW{P)5nm|3Q)fnad{N2oRNec#@87k?h{*7`-^4Uv@sWSi&9s~dkHmj} zaxbT0i~b7X{X%C(Mn;B*rRq;4|fS@`9u}qa0-wU~WFB&H@MB}dZey=6EsYDXx{6Q<64r3=eN20K76X zBsvN`p%Bj)jeCDZMdih-7#<|3kwddt(#GWQ@Q@JVQ}h8IX*qgy$5}9x%`--0-&aPY z@}0v3Jt8JoTZaS%+1S_wcLOLRy(kgQL6h=)A-buTatpTSt^NP7^CTb*f1!3V_a%tUg}vI|LGs}0oZt?WaK325J1n$ zF{A%sX&FPCaGV|?!4GKsr|)t|OUvjW1iVlS6d*>X0cP|+jGZzHdU}R>I*OonnO3%T=D=nuZN+JNi_{+%1DJUq&$;cd}8EM*G8k3BS&IU$0RziTBt{9;b zjeZ*SL2^AE1sNHcRT%L^3D*dEY*r-U+~FZK(v_r;NI&VNkb#1pf}9)*c!Si_(?bX) zk`(hVfS#@}-B0~_cxB{tbZF!(jnv!bC@zq3^+AN=r-e@UYS=P0{#|$|IhT2jGA+&l2ahwh;5IKBpCQ ziPbNeH*cOE-p`-(&jto=Jo@lsW+qdo$JY?#ItmIj z_5i0Xad4PWqZ$6F6b_U2Xksy0C#N8v!NxSKMr6FRS=t1n0GxY&kOR>8 zTiP_u2Al}}r$1jw*EO`U2?{6p|3yv%thBMTZF=$X6Mk;_IP&tzh1#?{8@%;FA(46t zI{zRCuq6geOL(V4!^4u|6AKE6nGzfxrt_!nv&hXe)TnMqNaV((l*Hm4{>TE^$F7~F z`K!Eci-=$woJU9=pI2O-OCt|UKK~cl9~W(i2nq@h-}#=fL|v)ZH2G~=_1@HwEbYL9-@ zTI_Sd_O<9^I$|4fhH3-NcNG_02lBGZKzaUpP+4e$zTjH)QGGE7p}!V@diW#O4gEQ9 z#JeHR8*yH!lP~ab2Vt8Z`glR;qei2Tif5xZh%-`AC^H;$4E7VgX*A;EP;LU&H=qBsi^& zfelXa;Icj*oSl-<2hF6NdE)0tN4c5k-)%)*2_G~CZn-1+E}7vY#|&}U8s1MN&a+f@Pji%St( zhkj)p+6d1xF*jlz{Y^a2G~;jXM!$9+&DRv=ufwxf^+-SKb9SJ=*#HaXHiD7vNibWM z3G3J8g0=Y$JiAm5j&{|sVQnRz70Lrow@mPG-2z^2S>WTD2fp50ASOBw{JaXl$D<0u zLkb}xq!J=SYhc})Mp$jTAAQTi=$AI4A6f_g-c3lm7yZwA^c`D~*AYCc)P??IJH$t~ zW8VO5N^gLyP0g@n(_YBk)(QoA`_M<+4W;NOmX+*<^3o2dEI)$hk&Z!S*>R{SJq18o(2=N9^sH}Txj0Oq@J=gvduJ@X#U_kKWs@;zMd8-^PLLvRbv zBoV&l<43RH(W7@T^!PRA5AbB@1H61W0`K3A!06}~`22YszI>U4iHYBSr2&NE`PF>z zfOd$6Yp?}Ip^S?PjjB{QXiJ5jFe+Rtpu)orD!lEd{yNXZ2+F{Y=Ro-oFM@a}#LFRG z5%Kz5RB%+KLYOTTa>9^T0TsGBsBpjkHy&RRv{bPf{fETORkPQBmD@Z+lTwmWW>V!} zU3gLJ<>i_9voj?*B_*l;FA6g+FE3YLS_(`e`jb;O|3Sbb;N`VWdEr9kg-S}=j@~ge z4!`{{PBwN=FT>WGw=i8kxK&HXXJblILSpz&4)d5<*mXl2M`qLDo<(aDk`m*BqG$v~ zWO^1ZKKE0z-B{kXbxg#5e>_eAAWCecxrG1hA9<9u9=n4*u-id`j*M;~cL(CGH#c`) zr|}tF85|ty>6#0`EzUtEGqZ6K{pT|>(v!FJ6BJifoR^vy8v}5O$>CQm7Fz#lBd?I4 zxU>rdLB9IpB})up4VRd>03N4dA@Ik<)D4|ootNFk`W0>wDfPv93)r~D zII&xm-GTLy`C?*Xaw{mz>|)~T$f1qaFCnWgCnK&fh!+K7V&Y;FbR-ro5pg+bhJ8do z@=~8GBO!hnFLq0aONfh0kx(}gY(9uhN7+QwHPq$iil4!Yy|jK!Rx%DBDfVO2X)%$- z8tU@uGQD`wLi9^oFTs--^tkIM^gqg`hHyDKu7`NBLqc3u+`MqHA#v7&Ow;eEss?H& z&Si()BNh@evNGF2eTlIyKRua3jIW2-yNj^Q>BIU>Sy}7{n5(|n(Ae2Pjn zB|*?Miyav{Ze{Fjq^`dFXEz?yHZn3c?Ye{CC+`oOYuIF9XzXet_q!V)0tFZ^HF0+J z3J!=%Tw>(xxxwNWnyAzn8=KI&gA$Y18JW0-?)s}6FG`j=yLtu(C1m;;JG)f>vzK;V z8y%Jq?}kCXKN58mH(mHegxJR6-o${|Zs4AUV+gk&-MAGYatdxCW;6URX_k&CyMN+` zkQc#|;7!ONWYNCDpzI5C{@lk;vXzUU>F87|UQVGl|4lZ!E@r zW5Lck2^?3?>@(Pza)0hGi1XAlXQ~A_iT%blyxt1p0$Z`%hU!K+vAVff`oj1zyt`X_k*o`@HJ zfe#D6`-p;$I+s^cP+c_YoGz!4ElXMh*?g;Vg1^f*eMky)&6rWyZc8{68giU;6fCNnTI*S58#yQgj1h0G$BnVKww z%{+LZkb!6qwzGEhC~Ir0RFYAU-@1sEpPfXSTwH*0aZ^)UxS*im77&t@oxgBFT~m{<2sfKH$}f@-62v!mfRMPPq-0%FTda0u zK~q~>qrZ@ZPyiZ8RaRa>5$UlFb7K;o>6tmCA}>F0UNyF1M_X~=LKz|P8T$i9w^GV$ zYHCWiZ=65hWZrBufV!fh;zCn1I|m1OMKkrE)IA0kS>v$IKIm5? z&SLnEGj{?cUy+|8HrQj=&K3QQ)BQB6w0$so+ch=Q@WMnEtuWablY! z=KpP-oB7?69{SkE=z}kx@yBsp<6$S(v{m>%x1sso+-y#`j;%tUdo}up#9FonzcUlx zi8tU{MyzMfuyEcQ{B07kz7gMeJ+UtkOZ1ru-}(>yepL+mcnSEMlO*tP#qYedb!an|Gr#2#=G%sAbSe6z z+iB|#4_g)bvo*9eho7??WF*q@H#D12PB!RjZNah-*D3sF%3h0QJ+4K>?{Wy=b>=(i zeAy=a#<~~%?>78BQZD}9B?W(1vkCP`hqd-w!D&q~th2AeZ^NbN!xBDgA^M$J_#2uc z{2o~Z!G1Lm8n^>}+eWalIEm{?9ro4X_sn`+R~o?IYafL8?}5jCg| z?Zoml`l21s*l+-Offcmxn*Lz->7xB`F$4ynfKH{wq zkGw|x5Ff_{)UB#Ot+EAbTNqGJ7a-3LpuXt;ji*CA1@X9d%V$D7GvZkh&yM*2f1Ufk z@2{^nS!!hJfo}?0a#T{&(=%AQbg4V-QdUrLrL&XuV%4Qa%dlYq9rK!GOmW^ShMH~w z^kjOAwEH%$JIc^0HH^6FP5i3HUmUSnD( zCa$Qgt|7W`9qkhTxacm@*LI~{O-KL?F#vSq98AI2GLipVn(ZfO2@HYt+yWqpfSKQs z;snO@=X*HIX614=W?`Jsz_!B71QjF%;2W7BT_4`;4X|aw3KOH%vG?C?U`i1+JvMzJ zp|46Wg0n}eB6N<~{wJM)CLxG~&!}A{%p$-fm*jf6T+h)~rC@9{Msxy{dcd27%s;oPc-IAoJoLXz^rZ{PLp>r>9!vPoj2f`OSRhG!t&99y3$?@vw-%6Q)lQm##u`}w#;?9VevKU=7n&UTztTmU(V112!HRR~}i`Pk!AwdNb&jjZK?V4^E z;s-WdI7<@$I75^E{rV#vYs#&KU~EM+A%2Ixl{YtdV}mLY-b(JvW=Zcd(p z(IAuJnhv|g;gDnz38QfL)$+;)f(3E^1SqlnND&(3+3}V zZ4Pd&+WfAhPwTHOtIKb?wl+h~Bg1MOl9HTkZgGdEUL7!z z0Tl|b!>zR${nqzXd5!$?4(pOrPt~Yx`Fuj5f3LM`Y1aL(iq8%h8VOa=kwPuWYeZa0 z#-!;=haRrGCK}}8IQ_wI9*<3nbLLN-iafu5Xy4Kg$CPR^Il}L0j=WU6e4E?QjGuYj z;l#+{NMTZnQQgs&tL418)t`>pc&-UpJfLf?>9zRs(C0-9?CssUTGY9V)VeN8 z0T$7l%0ntA`qHzt1NDW^AMmVJA^OZJPKaJKJTQD!&(RV31H{z+p?vc2t2$s9?3c;_RK>z10e(S@0O zINCMUo`IBpWdG|vDyK^9qKZzP4T2vH$lsUHP%l)^KK7p>e^XMs#asoyvKC$<-#3`{6r{4=ez7FHs{Mu{N?y__A%Dq>F zMu_a8Z@v<}R%BE-$7#WkVM=v#MV5Jp*TCo+r3eF3hRzi8q?f%g^O^ExP)k|G*ATa0 zp+>-w(07~kWIAs5ue*?SF`L1Tw|3Y(x3J|~Pe@t1jpzFIU6f#}R85B1-Iu>{MdtQb zo`k^$rgnDYTgOK}g;KQYBJu+jU!AnO&H;C0+z*kg?#gSk-g~Bb3TilccIs8EJD^+9 z>9e`bhJ8sNV#@}>yd1F{C_e; zdu&f3k<$7~vX-^Wm8>llA*I!!P4!I#yAElJN)71iSE%SW?-+itr(cwhZ!uf&I zMQ-{D)w&`iQtXn#b>D-PBJ6_CS`V#|0ZFM#6Lw6`MwSWIXcg8he0##G#3I4G*ODY_ z6`tGNN5@Md3Hh3x*`lqSnyEl~%i%h{lQ&7d{`BTKj`!O>T;d5$t)MWj9(>Q?O4W## zs9?Hya>4YNzY^WG#=`8!;w19CZ2(J~-;8i>RV)?O6moGZZz>hr!%`!<)G2)}Lr6QP zkbZlz;lat%1y39N$sZz4?V(ht*MsVEx8kGt5Me&Yj8rf>P*@$C(GIS|2c zS8eO4pADB?ZRK~+S|(1RoK-aDqEz}Qh|g^=v)rzcQFCpX$MprWOZmF{GdxH9yF3gz z!R-Vq<)|-Hr-u}WwWnQGo|pRA?H32K8E)S=Q=xwVY?@ls8%>|Fe9e-(|HfWeEGA*M z#Vv5$u01_RjPm@-2YT|p^`!g>`qpP>dEIS!IIGep#vK*s9DjP!w)4VNcyuxsr^;8= za_*YR3+Y@@q1v{bV(~2W6Ap66zJCn#cc%JioETMS0N>#e(Ojj)3Oh?FceMawVoCk)S$>a^kuH~*BErXQyx`W(}E|IRSNpn_S-+3?Lg3?VL zjw@QG6IXXX_c~lU|3Pzl$d$xq!)|YVhxKBK-x)r9Bd^a$5%;*NxL%y;%$$W+4xO6# zzVD__^a<;Xl%NGdj0!n&-8GjTR{CEWej;8MezJOnQi5_-dEqUVfJ<-RKUwOe3pp&A z!{YpVy4>!V9lRHoH@UgVgu5(eaR6ERz~xU2y!ompugG3M=66c13siRYEO!rc5C0f4 ze~fhDN{zeZkf_WR1&TOj!hFT|kuAp1Os9V))1rd(0=rG8x@xP6kcK92k@q42Te^Uqg9?;f?~ z=u*tw!)=O;e**9KfYGA&NeM_<^q|o`xagNfjel>RX(~{U6 zU5~qXUgNrB@rvlq9dD{`6kiSsGhK050lG7)H=OCGSAWWOpyCjxKuF`qVROxH!&FzZ zIy%dX%DvNhZr@XqNbwtD*h$J(YZ;_Pq}qRwH(fNeBwgY5e8U)fO5(&ekH9Ru{L9R| zefAs9GnYd|*SSRTX))%4q=t|{@jF&2Pa3AHdnLSYj2*70)GeF?(k=I+%@jKrpM7h| ze54q0;p7izHk+;9l9#vz>&%|haOURPRio$uk zhqpX!aH4=~?8t@V=jivkMSfn<6JxXXwX%#8+5UpEiVbJz?we;tU5!#a5{*GW2@UtaAsbH>>_VImT(S>q(YS~hHy&f(N&Fi<- zt}b+ylyv>DpjWwDhw;ZDlIp_J81@0bUNPoAfi3s$2)s}JC}wiYIWVBD85q0nT}Y`? zx}vc-?Z)Qk5mjEss|Jqx4D7^r_Opja#$Vez!~;%3AuU&nTWtwZ>kHmg zl!B+)N+4 zoZhnA*qrav=y86vLvx-~CnmgIpU`&AdnnWMTBY@YvfhUA$SB{t&^_E!V0!+xrqIWY z%9|t<7%wzScaqieSKHHDjXC?>8M$BW9KN9>WH@+l==uI~(tO*9Z5M4a(8@-fo%Jc6;LY$cf!J+1>WW{SA*7q{ z0lm|)&AuGgpQ9GaNvbGTrk^2$T<;rxG4VY$Vn<%SKM+0Ss&dK>Eyx$Dw)<`5V z>W#Ez?u(Kz@_#0G{lMCngJpM*sg!izF?vNue#M%o&#QKu-}QlG@!~Of&Th2Si4#(s z&n!@UMJAsU$iL|07RPueL?en!m2T=wxWO4&4i_Re4rV)et;%mUpQ(foE@dnFcE7lCx?HTP z^tO)Xx+BlqV}Io27w@>JR@*x9(&kjYV!TSc@dD9=8(-R|I+mxm(9g@!``&CgC+hf~ zij;11$MJ__qZh}Ndz#t~F5T|S?w_hDGf_#p^+NPu=~egRD#t$1QQ*z$TYU7cWsXJn zD-B5BuY$5m$~nD~vX+PFr!FMJe7Z+T^X^yI3k<#P-1lO{Yn6HcAH|;=@+ak&Kega! z3kb9mo3}gvxMRZ<=zF zdZEirrk|Vn$BNKlp3y#|H4D1^j#_i7OPZ$Kc=7&DudHbGXK4p{5dK9%%CuKP4)^$k9&pD$>)3@@0J)ca5_<+k32ru+wz@G>L&Yk zkwrcCll56g9*+Cm9ev1B>$86qr{SuxC9w*^>i+aL3SS1u8hO^c`5_p%NSie2dY&J1 zDDZj1`R$+}jLz%jrHEdGO}aI6B}b#R*V?@_v?6ss_uVk1YV!V$o~Tcfl!jKW0q_0p z47#uBW7CNo86F)i2XBQ+e-?}EI>P+u)Ub2xI7f2E^W_pOeT!1!$uPcLn)6)fyrY^R z1ZKBl^OsXRr?GlA>!9;Wt;V7ukbFre`4L=$jjV>}k;w}J7%Bd9fITo!_2iGIY7btV zyzWY8*t%0(Y3*0W9KS)g3lIE`@+{-LJ^hv|c51jQ&Dte+k^g6zXSWKj`Rom?y?J3EJ_wdbsKGr_nTQaomL=v-v{&xk1dx|HmOFe>Q z-OoSj^%V1qmRM}bI;2JC>1JdATVBV-Zugbq>b?5mk=KJ*wr)lJXPR1(G8x}IUG6*` z_m{M;eIpa=E_-}v;&|gRF8c-kZ%d5R>B(6g9z&meBsL%4v14aI{le1gVMqNYnH^P= zrA|%{89d?ZNt9Y3VW>f0AGUEw6Q&AZ$M#EIsFrCI71%PTy)vgapYrgBuAau{i`vxh z3Kky@w8o4*jk50(Y@HA9Dt$}!)J0uxcJprH6r1-#f5^3z{OYduMBUhv=T6gmwAl{R z^N>$3SMDN@KkS4@@quM~p0?NU4{5VMUzbuic5RrWy|1UwnEf`Voym@lwJRKybKhI) zGvs{@?(|!#l;Cmb{waS@(dI3WGTv}w`(9%%oy_fC_suOo?5U5o8(*4tmOmxtIfk_;@!VjWpE$tekKb64j^ zzLIUcw!gD)N!8?=)dDTdpphvPglmw};2M@i*&H%-Y2gwF2del({L}V0$MHYCdX=v0 zF5~1Xt*TA($<*Xg$$rLfT7i+J>vufn2sTJzgqFSl)^pL7^$j{7rzri#)lv+5<}QW> zMsL+t#2#-;SeGni@cav9lPH|iIHF;F^|^z!=GM5Q62_G;b@Dg2MxM7?{0izw4}Gq@ z6WO_Q=hd1-@^~_JP3+{ODMR`DsYL~+CE#QoqsH93N^6YwQBO7+uMP!vEvP* zR)RiX<48N!+4xT=0G1X}Mf{F+9J#c=Jj*SWQcqkXanvr&6t1^+DHKd!<2h)<*DC;N%)I=NmbYP$KR&kalV=DzYMo5!dI_P| zNv`3#9nVJ{&nPzJd>RZ)Zx=S2w|ckD5F^}_bL(nNeB(Fq!}M{=^cRtOki0#owmhwX zV$wHqlcjyxE!J&2xrITKbV(xN_(!VU#;Wl)OL=RtD_=!c!(BPyij9e_ZnjnY;rE`m z7M=}>Q|P$6e79k@c+-wpB?~mjgM)rog^wom^^U&Yv*5~v{wPRV&@J=M<$6t(e)2tS zZtX$XWv~40BL_nSwrX4sUcGg*i*6$?r;V<@#av2?9TSME zkU`U8_rBnX8x19=MUtmBv%z7l?$&TiBgjsUEa)0%1O?_3=BwImrPolr)z>X}k}z;F zIpD^MI;KeL%Wu*Tyt+_J>Q0Jcd(Y6z9Yp_xUu`5&)!Tb%e1l4-VwtZbgkDN}FjO0{ z9BOwk{U9fIee{m~=+G6lbz2G@c)vGPr)$qOqYmd^)!0_}reSq(qsOYljb{ywx?49j zJlp^L@?*2F?3X@2F(ReBm+26(ZVosu^|V0syjFC6rrzp{lSa;#%46$=Fq%CoRq6Qo zb261*yz`0ouGV7$5c%>z`?+;czaB<+rKW*?c<%QKnGxb0X;tH`zG%(yz4O^2ArV3+c&!Fys-zHo;Bt&-{xq(TOsHE@wUvF zk6*K%_#SBfI+ZzjQha{%jlPki=F!g>fz_q1y!-L+2Bv;bgOeG~$@YcJ!u66nyI1XA zy-+gbKAGWecTUrlY~PZ(@-HrMtlz4}AoujeX*buhu9V=V z_A3Q;RG*u-+;=2%ufcaQ(t(#J{Wlze(|#z`z)eE`_(V+mt2ZN#d!#S_uuktt37A)y zcD7@;N)miOvZyBge7yF`_g9BU+RjF>l{U%?I~+0P+57p(s|gPgaA6%(_1iCCaA2t3 z%D;!Zziz~kq-AfX%q98q{c$TNGWbB8F7jI z>@s?!=KI4Nfrj99hG0^Z#}!Zmd$H=$2Bp9m%K#{LfLGu0&fJ_Y$+UJYGtw3-}U@T zYn|Y=y=v$4pnHeWu|WQ$xQh*=pKC_in&%jv-^U7RSEOnOT#npK%A7R0q~3e(fJu5B z@i>Sul!~ZGg0GouIftFho*3ryIgu_}A99rk^28n9p6Fk^^{KmSKR=JWhs{+ZAIC>x z#-G(WV+WRC1bU8p!0VSs;y;DR6!0_Av5txralzd*g~2-<1`|C3PX+~CqM1tFL2_(S zN8CdCiywP$C6Ade0fA>a%NKWo?zbP2`^P3b_xT+oEv7I~;Kcd20-{2DYAggko-HxC zB_74SdW7vJ&;Hhv-$`|61+Fqw_rDOUV;Ro6<2tUx_IiEUE!G^5>&iO?YO_u*EmReH zwcNgjCI8wB*VjKd1Xs24uF|-r5G|BtBH4eFa&^}-BM%D}Sz!@L;k7tblL-kcLnIE=Qyz{w}UHR+{LvQ)iK0i)t*;=oMYgB?C zym##hKGBm~D0h0Lo!ps>4biFEWcEw^&hVvb*g3_iZ!wSBk00koY7dYKPJW_V>}9NX z+&-A)c&x1E1y2i;g@JutPQ5_ZbaEKMg-rX=)vzUq83yX*C-n)4o6z*tk7u4@BpcGt!#d&x-Gb@@k4VmXH;a;MzC zRr>PtHh(Y={_OeqrPoN4omVFP<@g7V3L4L@$37dN*oyQ|`ZSF*Z?8#;dEoexdgEc(61$>AOB34iqEw3oAHCUaFb^N zUHrqfF%OTMlHkG0-jr@%hMVk+f|iorJsmztOu17}g;cyNf(|o2HVRqJus-?b$99~D zb0Vt-c5p<9Ccop4o2a-$j&$-ZU#>ss*-I>aHkLgOk(?wmW<| z1!n@x+pdg{@X39?Bs98eJnCYnIxf~7^kitLHFQ15(AOmI-IG&jopz&Z+WzjLy+L=C zOFx|}v_AdbMOWlg*??$kkvWe|*RM$H_em_>m(!cZ` zXZ8)NzE1U!Ekah3rCM+8Yl@fjn)kbr^x*9dbU!wZ1?4~IggHrF08FTVrf#h zck29GhrEHFhnDl#mR?)1bMv7|%^?QKh1rVtC+cKl{P=rXlp*}JvX=0PZDfjG%3Ib! zO0l{>{$H#ppmc8+Tm0pl@alwcbW`yC8vH+1EcvA8@xAQvy?aHesfIU(hMwhSvb0gz z-yIyTJ~No4eC1+#{n+!z2n)G*Xx*q>wcS9iMayI=wA)8ek zR{p-n!@?IQ(Z#BC9r#+F&^1$ zU_y?ZVoBEwJ9$l97}JdQ=Wk9TGfs%LzB1(8YT^<4^j*YIT0ke;LZ@we{S%6pj+`1` ze{3*0mT%Eup}**rFr54RNP2mehi$QQRzEqk&L$b1$yGm6$H-(lLk(`fLFF}F@h1-* zWzbtYJv_{LQ}5PB>v>9MvHgJx{PTH5Rz*@)ZEpy@|AyZ!W$jqVgQukKFVp;zpLtYX z&Eu7{SNU?Vj5PlUOpmh~w$HrH#k0lp!6`+T zd;0ulXP@mpDUNtZq`0}+(3W<&rM@lZK4tM=B+6#KGzyOZX8_o z<2&Kd6OJD?zJcfe`ZxIL`Cl`gt3@an0GJ6sV))rBa#iepvP?w$BPKxS^Znfug3J^Q zbiZ+RiCG6n>z9Nr@2<=SXXE=kK=4UERO+*}0Y$GoUCLPm3RyT%7DZr5TvbSPBKmii zNk*8441$wupdLUF4S;3vV#QP|!Hij>!fuXe1!f%^uWRCbgD+k34Y=rr>md@2mUx$; zr$R0VKRWXqc;m6h10C;ge@ddUeNrsZMo*AA z?ZnJJnOg3i2jG0ND!&*?lmUPj!%HI(inEV$L@^++%>f2#kE?;%fL_>?;& zYsmHo)d0Mr2RQ!h=hEHh())W=FcK4ljv*Sr0q2}uZogE7yfgq^qNd6coMi85x1|6E z0ObKfS}#Bck)G%{6z7NZTA6ISPTmvl{L>#{{O3Mb)%Gk#*dD+7=3IFCp8H&FS4z@P z#{TAQKKy<}jR3$^drpJorVjfVWj3W(MH%OKtbL%{`2b!6 z(E-yEha$OV9|3}mWFVqufO#YR_C#xwwr$-3ZvWlgu=_rHSG7%x(Wk4|z;~t}37P(+ zy{(j0f7xt5N?ta6r3lCW(|w(b*QAraAwl1Jl1^(rq@ksKn{c#Ms#;rHM5)iI_LB3A z?>dj7qE?}S-03HNsy_D;tSxu;AW5z_f!8u4=pb5x&F! zTyq^f^6N!h=4%kAAGWPmV)0;`1FO>g@IqgAi=Q*l_rA^1=P7H4=f$WS~-`2Ii`~I&_oI9`f0d%h(gH*#2&4ZiWSa zx(D{EVG!8(!H00oAv29iLI6Pkz|^YPY(FoJbFcs)W2_^vX-;P@x7h0#-}_EUG%ndA zmY5|TOp7L{mOUr)^m|1L*kzj8V^xpirPomSTmcn$XCd1`#x`c2fcgA7#7X1C$-u@H zV*9N@+Dm@-kC0jt_#|MZ{=Y*mHQ3p#AfXAK{L1IFgj;pQgz#b54&wgV5WYWsS= zzn}#aHvzB)rn_y#c2ZntRSpdBIxqKiFMm7LH_h)DDPiW{q4CD{F`;m?__8V}j8t`} z_KG?FHk0de3GD>}Ai0L&*z*Y!+Kg{Ay$(^*dG&;;ajPgU1)hGcENzX?k;3^0>zdkNOKtrq>OrUXO#5F#Y;M4seDyR(!Sr=b@uwY(O0IkPP%ttBJLYZ3W)^xqgOn!MHMCEO*SFD!qH4cr_j{@ARP~lQ0;!fD zGXreZkojbTLEw&!vr~;(W(YF(y_NuA9sz(p0sxN6uXAB0C$xu}0cj_!@n>mn zIdBg$FH$_Vi6DUYLwh%^n2WFAEJAcZVN@Y)srY#hpFz&b8DL|$*w$xXbOC&4;ewj0 zEr8|2zJKB@SoPv7-1c&q-;08n2thSBJPr$oKHeiY1Ekj&L)8Bx8TFs{`s+NCgQJ3T zYPs$nD4dNBZpR*LD~izp`WZ%57p1(x^tz$iqwQYM_0m*&NkjN)1GNMImthoO^JdV2 ztz@ioAxjPrbdv#bSu|rsB=S9~s7AX1b3A~*9m@6{O=&fpq>2eRXa;00Cg?BVT!FlC zZ|4FEFFCFIW9n*0j-1K*5(wkp_N!mONoSo|)%KRrlYjUl{N|E*_VZIO5uH3-NdOSH zm7}>~A3W0CF>h1OZ3alspDK9&SpYBxfKxDn9Tdi~y7w$UHn#850u%={!~`C^7fSm) zk@l;|-gL%YP>iM0!q%tRe~JOf zv~Os^N<0Vccl7ETH3NXXmQ`vTXaLM41ch{gS#*tUTdEaUIR~4FCZIFBn_61n-p3z< z9d_Qis%&e;Kbnn=y!gIBc2;!+)I3z^mxJCw~!z8X$v5GLxW|0O0B=`#?{J zlL=@tydnhwS*9R;AJz;)%iM4w0Ix}j<)?rX;K7C{s`*Jw1fu6jj=^goP;_9#+g+sJ%)J~Q|NTA2yJUnm8;qE~tG$Z+7U_db5}xVpZXsq_r|)@< z;mE9`>RXo3K6@@hn;LSR3thK*=?e^V1N|S#Qxd6aZX=8 zzgWBuN4q5&7VHzNpKI1MH+PHiep$?&4avD;_sn-=zrv>iQ|XWX;0B@wzD*>4JF2Hu zb^x&;P)h)C9WeoVEhiwYEW?6;mq{Sb2cYEVKk)+tfYJd0?fqmS$JzU|n5klgak0Jt zMh9ryH#IlIU!Hjqww+Kr`2pE<8m>BICVael&5$!cB`;^7%yEcg`T4%C#Vdt!VXkM# z-2WXSF=pzoV%z0CVf9Gmf?QMQuQg5_kcDu}#;#_ks65=lmk=X*mr0F#JcW7`rO6n8`v|kB~mo ziC;Jke)PM$Ybq-6hwuFtJaE^~?8hF=DZa%hNI396slLva`np>@&x?jaZ8H+hnEfZH z{!VVZi@|j!5y!d?oAAS`_^h3egx!l7dh0W3cpfLBSe;wR5>}NWe5Nb!T3B@ez_Q?1 zO_~f1UA@p{B{t<1x94Bx8z_J-WqyB#*8TSj*DR$y`-!B_*&yIJ1i{MH*g!PFEHyhd z4Sw^$5;)+9!>iiE0+|gPVQMG> zodh&l5HRD>)-!_}1kCNcZvcEg#Wn~UdGRtT*v!9z1p)?>+iMy)gA$#Gxa<`Yj-Sc< z>;wPv=)(}Ik!8uy47lQ;>G0|MYh8?AD_{WNXeZcz5BF@Ew>g_#$nLXg*LeMsed`)# z$!7Y=GWl5bU#8l#_C5WMapM-E-n~JjKHB*)GJtDQ;)_&E0C3jsQ;mWkVPa43uZ3VE z`7^?C3cJuL|6L3h8t)|7_byvs_!Qe?AXAXp>)3M&B>Q`<3PaRVm`}`rW4`eDsv>hHe)on+ssbQ|~F2Q@UW-Z4_wD$Dkx7hpa2A;yu%?qflL zGJn|0OpByb@DS@MS{Ah@W&^XLAXY03cmcWhv7$O&6d7rEfIaTm8t&D z7yG(e#O+4y+YDAv-|+|^EHJdvyZJGwJ1U)GaL4kCGoJfJl#k0 z0azy=Zo}>jlbb$ERQ^s)wMR~^tNbF>G5{bU2<)q<&>f0!Os^}v2EbP{!8gI~rupj666H;~Q)Likq;~>?Q9u%gK_Rg{90C<}OJkxsv zfw{eOFeryGPoO*JuB3-1!e*igpn~wF3(kk@NPpCVKw0tFQuzKEXL;^tb4jXA_#AH~ zdzUZo@0mt_8#LWm`6q7W|2xbdvi57b+tcr2ertQ2AovSJ@_(%0OugD-em2ns>~BtR zip@)5%bnwSSNxa&zt<45;8Cdnl8*8A-H{vgZG@(w~#`lJs5rNi~PYYz7`Bs#*`NBvfUDc4F7MHOo!0Q+#QbBR;5E zAxH;tIdk^&TX)TelV+b=)%OVk07xA=po?fxk9KXEnbq}W z#&a}iq1h)kj$Ra2HO~9bdh#((I|MxAvra!ery-Muzggv-X#NPm8n8*?V3rqHRX zRH~WBhzZAvkcc8qviRnmcfg6m1OV`v8%SGBB%q#A6b=LoW>wq(AWC|fM&RBq>4SiP zpcFaAbPDDTyPw^LS^&<#JM^fd;AczzY}5{@HvRYISHdHA|8L;qs|f@+ALF6!P4jy5 zxrN64C&ub-JhZOq2Gfb5yO^7L{Wa!~4f|mXIh0Pr!-Xt|*2XmAA<_VJD^5(Myk?}6 zf+gK)W3#Hh!2IC0)x;;i4GI9d^^W67BVcNGo{9h43@rEsWZD35+Z5@2 zij^W~a||fa8WVJ$f*0j2ryxr>k6;s#Vs(iGJh);xj2%CINc%uWOMm~r@bgQrD0}^c zq2Lngh{V6AdNwcoAd{MB+;{i-#-;m36Eo<;hyb8jy@$V9Er6N}1)}ypMmoejD@h4l zbFb`|A_D}O9eoXEDKLJO8&;)PIdJlBe6LRY#=<*>4FK5fL;iLlZ4=f^FO66_OauXd z@_;}VN_0O9)g=_yc0UkE88Zl-DZ<$2A7xX9Bl8Epstq$>ngENGEPZVl0)S$**Hn#Y0oJ?$e!8$52teE?Tr$fi8gkDnWcmWUH31Ng ztCVvPqXJ!wDS!zrA7#@pcI&O-pRccgSY6#9w03aH=W=l6Av0jz%2gG=wk)SWwl65* z`5$JI@N`e7qJ%@Cwj+rKFfJ5vP2ZK-|5%s_yP=LW{=bbfPu{b>Dxv;UFTQ4^5Yrh7 zI_K158-gulDsC4Wm1TN+%{q@~#^Ev$B%As4yl@ntoU6m;vC&W2YWeQeOKuLRsK3%`oTY|dri z(e93!N<$qc2WsW0}U%0x70ViKHC7M z8K7_=W^Phk4WZcE{Y@0nT)1HVZ8ZS^XYM`)`iaU}irR~9iZkxe6i`*oW_-5z78@p{ zzv(f4S${#a0rptY;Tpt$U_6J8g+j9S-LP`drhEpjUoaoexcH*MYxIEhyKAq92Y>aO zA-kVU>(+ff*>kWo+dsQDo~n$F#pWJY*SsLaFpt6Tg4z$(cP!HR?`#Uv#$*!jZX1aG zUoe)FHj{`nm*jRrb&BBBQzY9ptGI-y-g}t>#&?C^PJfA_#<{kX96zdY`vmn4LyUKmD9^@<>4Gea~thY`e4CNS~zz;5#EAtRt%I=g&V6 zzWd|5hNS)d=%HW!H~f}>z)<@mWDH(3^_aBXzq&Wwr0fu@TQD=xG*_1NqY2yUNW;I7 z>W3ax;T$sV2P#ea>pEYH7V{A_CMNHa_QDd)GPTz!H}0?Evl)QgJ%sxroqxxza9ouE z084^hY^)A!76r{RWw(p9xmgliC#HY`W5W?!vUA#iPohvzb-fg=ASl_-fm%QzXTJ{? z4B2I$z2SeBK3esBfS3RI5Zrq9oT@t{S@L=kY$*%{D!axKiw;UO&K5KLL=7N98hd3X z1@G(mqBjki07M;o&Up$%h`LWb`mD4!J|&D#x3egy0?+tftJs?7@?K}DGtv5f{`_0v zm~*QS0NY^4vzXx^dnb#d0 zM!;Et)ECf`%Yrgy6#Vmz*Q)LaT-ClDu087bicgg;mt>j&B^>k5^>!{(_O5SUIyD-f zA$t8o%x^5_(Myo_g+dmJv33yEUu1kdC#q^rwP?lzFO&H6yO_D>-mVC$KQHNNGK#F> z+))953y21Amz|k9!V5B0>Hp5D=hi2O?1o06-1^ z_AwC9W(Vei6{H-a1)v7BLD3BW*lOEtDt@n0Xv5mIaOwVsKt7ur_{AzrbWF2=@J_OK znX+Gf)9T65x>nq1&*|6s`TYrkvJYm{5LWy2)VORq|z0+?7cITRsnukn$93IaeW zQG!wk@7+xRAZsm#x{i#^yZ`+NOg>=$L22`#)Z5hs-<-OSXK|2flPD+&0IX3CX&SBX zN(KUT^o0b~zmcd~OH+N2Dk9ZoaevD2l-a1%r(wM)VSbvuC$sZK#+T*l`>Fb@n$I({ ze@IZw5~P3U)(8O1BLL9vvo@gF*3LVmtxP)8xoY(Vt`$hO?-GgeMMM>lUdP@K!F>UP zp#ji)qY2P!BnJU}noGkizyBQ^b?U4EU3;KpXlHxv51ZF-sOocgkq7`Q312HmwT#tw zP(xhkk4k@BMDk-|_rI;@19c-+*$YL6NW`cD>?Ni7IKJxR+~Yu_1XW+uB-m~4KWG0} z?zp8U0N|=A=md0|0FK0Ug8^D|wSjyV<}J7b&baV`A?N|0=gVf{vI7r=Pu8rh>T?t$I<_$xNI8XQ0Ao=V z1Rem8Fy8+VIVe;_`m04kg3gTjY9&cg{|id-oNlh#>p0?^C9I5^`~(R42_S^X_npE~ zbJ=ho<`CG5-2UGeZ^W&U=PNMp^6NIG&G(=*Vo-&OW z2w*}Fdili%Fun`6zD(u!^Xi+|aDGek2Dod8$I2O>x+Pg4IP3OX;qckj2Y@dT4FD&f z*v~8U5q)N3!4Qo78=*m>(UE>=ApKCUn$y0r3ZMDu$F8NS|K&OW*~~R${G4!a){{+( zh~|kFFyp*);o61shq5cAbp5d>!hc?RrP_~Cl&~GK?Ub_#03;9qn9yGXQK|k$q(7S- zD7ygd2+XCoR87OG3arI0GO=GW4{Pg}W9J8DeB(Wge|6V!^!dI-0AOYf0Kk_g zO))e8QFG$kMr=#PE_a3wKr|cb$hNp@nhv_cU#9?$=~Jru@0?RA0Owfyxq3Hx48ZH1} zI)w=UTsUSM9UVa-3jhkaEIgG>8@c%9Sa8%T#dKbyNCz8@T9+|3-iF)4_Q*~5tj@a+)|pd>OJ=ofFbtscr1%vpY9!}CP-?;SugBc2(N zsQpN6h)?F|PsEmw~frTmg&3B5Ee?Lz&fCFm;0O)jJFR9Nb zGWlE#=42+VchFM*4ZxAfPo+y$M>K=iE(=<%H;Ob0&VoU`EayB0#VX*dCZu_E(V z2>@sW0I>7ZMDo9s%apxz7j|gOko=6)0e>&QoO$^HOC8k3?0naDK&d7~6U;YvEp^5L z03-Ed@75GE-A@`1w5tRti4)!t>ypxBYPFIzrYCgrTlE@>p11<52+ic?|#v69B-ZpBK`7 z&=270`12!NB0Z*=%rC3MCo;bq2;_4J{Fq<$VSF~8&#V9ZdWW(l&v2mCTa3SgfZ|3y zZ`jG#{`jt%SQrEW0A~Zb+6p9q!1zzRn4fJg%`yoP1nAOk0N%E^$jq!0(N%=h=UTFB zL%`!R#FjmI-lZ_-`s(KaTs8A3_~6aAtNI*4$pC<_Spbm1$v(NXQ#Zeq3xOHxL+Q_^ z^|B!o*!!Z&@0H9$uWLH)n5cur^x{g#&Jt!0K*Z7cna{zBd=}P|fo1qA z@Hr9PYXktkf+m0f0DjC*+mZ!QP0+xcGH{C3e!9KjOCG#KaY+0!%y2yWhd0Bi7hgE^9l{W10$zIXbl9+JO;w*GC>cC=$=Gf6hFl(=O7%g~8b75h zxriYpbofP8I@oyTm)ZOpr;-MrxZ`C$(Bs(SMejb{&#hq0Fg`A+8Oaxj#81ITdVymQ z)oQG7*B}7MH6geEgauNuNU8&z3e!e9H#-!g0vW};Ha|bWVNa3KWokY9=|wsO0}T7V z1OP7i)z4u17f!2Iw-{v9YS`yM=>O!?sy;_hGED#i0QpoBUM9AGsnVZzR6+}bSn`>b z{=7HZ+sjXhs{QPsl?`+;eU}^HOlF*@^0TWOqt4Pm2GCnX16ozcacR%&-D(K{&OskQ zM@JxMpBMAn`+)^V2LP~l*@a&fE4A2+&r@jS+0%=`i~W{SDWON~oA2KLC)o4QLx!Xe zyr{pY2QHkt59GRgs`?y3h?d<`t|S2PWN#Pb6t?pNT)_IQ!!%OYpp#2}HnGR6NJlA> zpI2X5Tc2OrOgxq@ayp7g`i}|Yzmm_|&*oJ?q1FHZH2^Q>_i9HZ&7%!jkZ?-C=^Sw4 zcdW>lk+hJg3Gn;;f6J&808lj*?tJbk*lI%S;5L2{TEA``d~M%@Ae6}t{9=PlHUNCN zakTz+Hf`0|FE0IU8xM<0V1Y?Ru(u`5FSGesQiYp(4O(_T{S;Mxs=BiK>C$HOxkBWa zSS|-I60K*mrS8-B@@j)x0)TV(m}<`k3?lWpcJ%-Nqn$Yoif>DeISz-nIU&c~!X|(f zOWX;f{>%Ifew1ivfS;~-3F73ln)J@{SK+E7jxpw6)H2cK^RTdr(iX4RLnTOmno5ce zzX;>>qYN%4_!Lw5S!v}ANVmGm@8_i!YwtTN7V#C1=(CS0$woRS)mupf;EC?7r0qY8WEBg$V-OtkJcAo^dE`6A20;PDbDo;=U>tVR% zOJ_r!78>})29YQLV4VnMDgpq2=cFI*MC%iWNWywaR`Sc@{3>0&$0N6ZmHt`@5=+MX z;;O~0t&i$#9g+G^<(|q-3o> z0L4z_^=jU5-zu??!Ls$em_Ly3qlN(Bd;$Pi6_}O$vL2K%Ki#f)e0R@|G~V9TM(l6Q5lDeI z02Gt{<*NS1`4|EC%O7FS>4#Omu}h@O&iV?h`sc&O3|O|U*zxbhl$9jeJ?J+2iDrB+ zR#e`NXaJ1?7M3s_WD2L=c!m0cc>B$UajUFBBtMd=<~vz^_M)YhexazJuYXkuHGNJ&*ik!++fBG�KmC6k}d^GnmLKWAqAyRAR5SoBcxcO4u0~= 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ℑS-mwiyP@{hf5%x&a0w*EH5h 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 Oe9{MhnEO#~VETWLPtVi< literal 0 HcmV?d00001 diff --git a/source/직원관리.skincfg b/source/직원관리.skincfg new file mode 100644 index 0000000..e44e66c --- /dev/null +++ b/source/직원관리.skincfg @@ -0,0 +1,61 @@ +[ExpressSkins] +Default=1 +ShowNotifications=0 +Enabled=1 +dxSkinBasic=0 +dxSkinBlack=0 +dxSkinBlue=0 +dxSkinBlueprint=0 +dxSkinCaramel=0 +dxSkinCoffee=0 +dxSkinDarkroom=0 +dxSkinDarkSide=0 +dxSkinDevExpressDarkStyle=0 +dxSkinDevExpressStyle=0 +dxSkinFoggy=0 +dxSkinGlassOceans=0 +dxSkinHighContrast=0 +dxSkiniMaginary=0 +dxSkinLilian=0 +dxSkinLiquidSky=0 +dxSkinLondonLiquidSky=0 +dxSkinMcSkin=0 +dxSkinMetropolis=0 +dxSkinMetropolisDark=0 +dxSkinMoneyTwins=0 +dxSkinOffice2007Black=0 +dxSkinOffice2007Blue=0 +dxSkinOffice2007Green=0 +dxSkinOffice2007Pink=0 +dxSkinOffice2007Silver=0 +dxSkinOffice2010Black=0 +dxSkinOffice2010Blue=0 +dxSkinOffice2010Silver=0 +dxSkinOffice2013DarkGray=0 +dxSkinOffice2013LightGray=0 +dxSkinOffice2013White=0 +dxSkinOffice2016Colorful=0 +dxSkinOffice2016Dark=0 +dxSkinOffice2019Black=0 +dxSkinOffice2019Colorful=0 +dxSkinOffice2019DarkGray=0 +dxSkinOffice2019White=0 +dxSkinPumpkin=0 +dxSkinSeven=0 +dxSkinSevenClassic=0 +dxSkinSharp=0 +dxSkinSharpPlus=0 +dxSkinSilver=0 +dxSkinSpringtime=0 +dxSkinStardust=0 +dxSkinSummer2008=0 +dxSkinTheAsphaltWorld=0 +dxSkinTheBezier=0 +dxSkinValentine=0 +dxSkinVisualStudio2013Blue=0 +dxSkinVisualStudio2013Dark=0 +dxSkinVisualStudio2013Light=0 +dxSkinVS2010=0 +dxSkinWhiteprint=0 +dxSkinWXI=1 +dxSkinXmas2008Blue=0